1 #if __cplusplus >= 201103L
7 using namespace wibble;
9 #if __cplusplus >= 201103L
10 enum class A : unsigned char { X = 1, Y = 2, Z = 4 };
11 enum class B : unsigned short { X = 1, Y = 2, Z = 4 };
12 enum class C : unsigned { X = 1, Y = 2, Z = 4 };
13 enum class D : unsigned long { X = 1, Y = 2, Z = 4 };
17 #if __cplusplus >= 201103L
18 template<
typename Enum >
27 assert( Enum::X | Enum::Y );
32 assert( !( Enum::X & Enum::Y ) );
34 assert( Enum::X | Enum::Y | Enum::Z );
35 assert( !( Enum::X & Enum::Y & Enum::Z ) );
36 assert( ( Enum::X | Enum::Y | Enum::Z ) & Enum::X );
40 #if __cplusplus >= 201103L
43 enum Classic { C_X = 1, C_Y = 2, C_Z = 4 };
50 Test enum_uchar() { testEnum< A >(); }
51 Test enum_ushort() { testEnum< B >(); }
52 Test enum_uint() { testEnum< C >(); }
53 Test enum_ulong() { testEnum< D >(); }