1 // P0614R1 2 // { dg-do run } 3 // { dg-options "-std=c++2a" } 4 5 struct A { int i, j; }; 6 7 int main()8main () 9 { 10 A a = { .i = 2, .j = 3 }; 11 int arr[] = { 1, 1, 1 }; 12 13 for (auto & [ x, y ] = a; auto z : arr) 14 if (x + z != 3 || y + z != 4) 15 __builtin_abort (); 16 17 for (int d = 1; auto &z : arr) 18 z += d; 19 20 for (const auto [ x, y ] = a; auto z : arr) 21 if (x + z != 4 || y + z != 5) 22 __builtin_abort (); 23 24 for (int d = 1; auto &z : arr) 25 z += d; 26 27 for (auto [ x, y ] = a; auto z : arr) 28 if (x + z != 5 || y + z != 6) 29 __builtin_abort (); 30 } 31