Created on 2022-06-18.00:00:00 last changed 5 days ago
Insert before 9.4.1 [dcl.init.general] paragraph 18 as follows:
An initializer-clause followed by an ellipsis is a pack expansion (13.7.4 [temp.variadic]).
If the initializer is a parenthesized expression-list, the expressions are evaluated in the order specified for function calls (18.104.22.168 [expr.call]).
Subclause 22.214.171.124 [expr.call] paragraph 8 specifies:
The postfix-expression is sequenced before each expression in the expression-list and any default argument. The initialization of a parameter, including every associated value computation and side effect, is indeterminately sequenced with respect to that of any other parameter. [Note 8: All side effects of argument evaluations are sequenced before the function is entered (see 6.9.1 [intro.execution]). —end note]
f(std::unique_ptr<int>(new int),std::unique_ptr<int>(new int));
It is not clear from the phrasing whether the evaluation of each new int is part of the "initialization of [its] parameter" or whether only the initialization of f's parameters from the completed std::unique_ptr<int> objects is included. The note does not help, since it can be read as distinguishing argument evaluations from initialization.
|2022-06-21 06:51:53||admin||set||messages: + msg6859|