On 11/12/22 18:02, Joseph Myers wrote:
On Sat, 12 Nov 2022, Alejandro Colomar via Gcc wrote:No, assigning to a function parameter from within another parameter declaration wouldn't make sense. They should be readonly. Side effects should be forbidden, I think.Such assignments are already allowed. In a function definition, the side effects (including in size expressions for array parameters adjusted to pointers) take place before entry to the function body.Then, I'm guessing that rules need to change in a way that .initializer cannot appear as the left operand of an assignment-expression.I think needing such a very special case rule tends to indicate that some alternative syntax, not needing such a rule, would be better.
Well, by not being an lvalue, it can't be assigned to. That would be somewhat like sizeof(identifier), which is also a unary-expression, so it's not so much of a special case, is it?
void f(size_t s, int a[sizeof(1) = 1]); // constraint violation void g(size_t s, int a[.s = 1]); // Also constraint violation void h(size_t s, int a[s = 1]); // This is fine -- <http://www.alejandro-colomar.es/>
Attachment:
OpenPGP_signature
Description: OpenPGP digital signature