// { dg-do compile { target c++11 } } namespace S1 { namespace S2 { // opaque enum declarations enum class E1; enum class E2 : int; enum class E3 : short; enum E4 : int; enum E5 : short; // can be repeated enum class E1; enum class E2 : int; enum class E3 : short; enum E4 : int; enum E5 : short; } } // are complete so we can declare variables S1::S2::E1 b1; S1::S2::E2 b2; S1::S2::E3 b3; S1::S2::E4 b4; S1::S2::E5 b5; //even with elaborated-type-specifiers enum S1::S2::E1 a1; enum S1::S2::E2 a2; enum S1::S2::E3 a3; enum S1::S2::E4 a4; enum S1::S2::E5 a5; // and the list can be added later enum class S1::S2::E1 { e11, e12 }; enum class S1::S2::E2 : int { e21, e22 }; enum class S1::S2::E3 : short {e31, e32 }; enum S1::S2::E4 : int { e41, e42 }; enum S1::S2::E5 : short { e51, e52 };