https://gcc.gnu.org/bugzilla/show_bug.cgi?id=119624

--- Comment #5 from Pavel M <pavel.morozkin at gmail dot com> ---
(In reply to Joseph S. Myers from comment #3)
> because the lvalues are evaluated *relative to that expression*

May be relevant (this is a fragment, see the full answer at
https://stackoverflow.com/a/74876126/1778275):
> Lvalue conversion nominally occurs during program execution, since it needs 
> the values stored in the bytes of an object.

> the controlling expression is subject to all normal rules on validity of 
> expressions even though it's not evaluated at execution time
Is there an official / normative definition of "not evaluated"? My preliminary
thought is that "not evaluated" means that all relevant constraints shall be
satisfied while the semantic rules are need not be satisfied (because C is
statically typed, the type inference usually [VLA is the only exception?]
doesn't depend on the semantics; in other words: types usually are known at
translation time).

For example, here I wonder whether "not evaluated" in the C standard always
imply execution time:
https://stackoverflow.com/questions/19435004/explanation-of-linux-kernel-field-sizeof-macro/19435087#comment140244962_19435087.

I propose to create (if not yet created) an official / normative definition of
"not evaluated".

Reply via email to