[basic.execution] p5 sentence 2 states:
If a language construct is defined to produce an implicit call of a function, a use of the language construct is considered to be an expression for the purposes of this definition.
However, the intent of this sentence is not immediately clear. My best guess is that it is here in order to ensure proper sequencing and to make sure that temporaries are not destroyed before any implicit function calls complete, however, I cannot see a situation where this would apply and change the meaning of some code. For example:
struct S { };
const S& f() { return {}; }
Here, the return
statement would be considered an expression, and the operand {}
would also be considered an expression, and therefore a subexpression of the return
statement. Is this the intent of the sentence? Where else would this apply and have a meaningful effect?