* doc/invoke.texi: Document -std=c++17 and -std=gnu++17 and document
[official-gcc.git] / gcc / testsuite / g++.dg / cpp1z / init-statement2.C
blobd1dc9188b1c575c9c30a4d61ecf79250b3615901
1 // { dg-options -std=c++17 }
2 // Test C++17 selection statements with initializer, basic use.
4 extern int foo (void);
5 extern void bar (int);
6 extern int g;
8 void
9 f (void)
11   if (auto p = foo (); p > 10)
12     bar (p);
13   else
14     bar (-p);
16   if ((g += 2); g > 6)
17     bar (1);
19   if (auto a = 9, b = foo (); a + b > 10)
20     bar (a + b);
21   else
22     bar (a - b);
24   if (({ int a; 1;}))
25     bar (0);
27   if (auto i = foo (); i > 6)
28     bar (0);
29   else if (i++; i > 8)
30     bar (1);
33 extern void lock (void);
35 void
36 f2 (int i)
38   if (lock (); i > 10)
39     ++i;
40   else
41     --i;
44 void
45 f3 (int i)
47   switch (i *= 2; auto idx = i)
48     {
49     case 4:
50       bar (3);
51       break;
52     default:
53       break;
54     }
57 void
58 f4 (void)
60   if constexpr (constexpr auto s = sizeof (int); s > 10)
61     foo ();