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