1 // { dg-do compile { target c++11 } }
2 
3 // opaque enum declarations
4 enum class E1;
5 enum class E2 : int;
6 enum class E3 : short;
7 enum E4 : int;
8 enum E5 : short;
9 
10 // can be repeated
11 enum class E1;
12 enum class E2 : int;
13 enum class E3 : short;
14 enum E4 : int;
15 enum E5 : short;
16 
17 // are complete so we can declare variables
18 E1 b1;
19 E2 b2;
20 E3 b3;
21 E4 b4;
22 E5 b5;
23 
24 //even with elaborated-type-specifiers
25 enum E1 a1;
26 enum E2 a2;
27 enum E3 a3;
28 enum E4 a4;
29 enum E5 a5;
30 
31 // and the list can be added later
32 enum class E1 { e11, e12 };
33 enum class E2 : int { e21, e22 };
34 enum class E3 : short {e31, e32 };
35 enum E4 : int { e41, e42 };
36 enum E5 : short { e51, e52 };
37 
38 // more repetitions allowed
39 enum class E1;
40 enum class E2 : int;
41 enum class E3 : short;
42 enum E4 : int;
43 enum E5 : short;
44 
45