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