1 // P0614R1
2 // { dg-do compile }
3 // { dg-options "-std=c++2a" }
4
5 extern void bar (int);
6
7 void
fn0(int n)8 fn0 (int n)
9 {
10 int a[] = { 1, 2, 3, 4, 5 };
11
12 /* Don't get confused by the colon here. */
13 for (int i = 0; n > 0 ? true : false; i++)
14 bar (i);
15
16 for (int i = n ? 3 : 4; auto x : a)
17 bar (x);
18
19 for (int i = n ? ({ a: 3; }) : 4; i < 10; i++)
20 bar (i);
21
22 for (int i = n ? ({ L: 3; }) : 4; auto x : a)
23 bar (x);
24
25 for (int i = n; auto x : a)
26 bar (x);
27
28 for (int i = n ? n ? n : 3 : 3; auto x : a)
29 bar (x);
30
31 for (int i = n ? n ? 3 : n ? 3 : 3 : 3; auto x : a)
32 bar (x);
33
34 for (int i = [=]{ return n ? 1 : 2; }(); auto x : a)
35 bar (x);
36
37 for (int i = [=]{ L2: if (!n) goto L2; else return 2; }(); auto x : a)
38 bar (x);
39
40 for (auto x = n ? 1 : 2 : a) // { dg-error "initializer" }
41 bar (x);
42
43 for (int i = 1; auto x = n ? 1 : 2 : a) // { dg-error "initializer" }
44 bar (x);
45 }
46