1 // P0614R1
2 // { dg-do run }
3 // { dg-options "-std=c++2a" }
4 
5 struct A { int i, j; };
6 
7 int
main()8 main ()
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