Create embedded-5_0-branch branch for development on ARM embedded cores.
[official-gcc.git] / embedded-5_0-branch / gcc / testsuite / g++.dg / ext / underlying_type4.C
blobb80ed57694ba9a93b1e8bc388e5abf584b260b8f
1 // { dg-do compile }
3 #include <tr1/type_traits>
5 using namespace std::tr1;
7 enum E1 { };
8 enum E2 { a = -1, b = 1 };
9 enum E3 { c = __LONG_MAX__ };
11 typedef __underlying_type(E1) UTE1;
12 typedef __underlying_type(E2) UTE2;
13 typedef __underlying_type(E3) UTE3;
15 template<typename T>
16   struct underlying_type
17   { typedef __underlying_type(T) type; };
19 int test1[is_same<underlying_type<E1>::type, UTE1>::value ? 1 : -1];
20 int test2[is_same<underlying_type<E2>::type, UTE2>::value ? 1 : -1];
21 int test3[is_same<underlying_type<E3>::type, UTE3>::value ? 1 : -1];
23 int test4[is_integral<underlying_type<E1>::type>::value ? 1 : -1];
24 int test5[is_integral<underlying_type<E2>::type>::value ? 1 : -1];
25 int test6[is_integral<underlying_type<E3>::type>::value ? 1 : -1];