This is an unofficial snapshot of the ISO/IEC JTC1 SC22 WG21 Core Issues List revision 118c. See http://www.open-std.org/jtc1/sc22/wg21/ for the official list.
2025-10-11
(From submission #743.)
Consider:
struct S { };
void f() {
S s;
template for (auto x : s) { }
}
This destructuring expansion statement is ill-formed, because the syntactic rewrite contains
auto&& [] = s ;
which is an ill-formed structured binding declaration.
Empty expansion statements are allowed for the other two kinds of expansion statements.
Proposed resolution (approved by CWG 2025-09-12):
Change in 8.7 [stmt.expand] bullet 5.3 as follows:
- Otherwise, S is a destructuring expansion statement and, if N is 0, S is equivalent to:
{ init-statement constexpropt auto&& range = expansion-initializer ; }otherwise, S is equivalent to: ...