Title
Empty destructuring expansion statements
Status
open
Section
8.7 [stmt.expand]
Submitter
Jakub Jelinek

Created on 2025-08-09.00:00:00 last changed 3 weeks ago

Messages

Date: 2025-08-11.12:33:54

(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.

Possible resolution:

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: ...
History
Date User Action Args
2025-08-09 00:00:00admincreate