2018-11-07 Richard Biener <rguenther@suse.de>
[official-gcc.git] / gcc / testsuite / g++.dg / cpp2a / range-for9.C
blob74d71b67213fac802eaca7ebd2679e8cd2274f49
1 // P0614R1
2 // { dg-do run }
3 // { dg-options "-std=c++2a" }
5 struct A { int i, j; };
7 int
8 main ()
10   A a = { .i = 2, .j = 3 };
11   int arr[] = { 1, 1, 1 };
13   for (auto & [ x, y ] = a; auto z : arr)
14     if (x + z != 3 || y + z != 4)
15       __builtin_abort ();
17   for (int d = 1; auto &z : arr)
18     z += d;
20   for (const auto [ x, y ] = a; auto z : arr)
21     if (x + z != 4 || y + z != 5)
22       __builtin_abort ();
24   for (int d = 1; auto &z : arr)
25     z += d;
27   for (auto [ x, y ] = a; auto z : arr)
28     if (x + z != 5 || y + z != 6)
29       __builtin_abort ();