blob: b80ed57694ba9a93b1e8bc388e5abf584b260b8f [file] [log] [blame]
// { dg-do compile }
#include <tr1/type_traits>
using namespace std::tr1;
enum E1 { };
enum E2 { a = -1, b = 1 };
enum E3 { c = __LONG_MAX__ };
typedef __underlying_type(E1) UTE1;
typedef __underlying_type(E2) UTE2;
typedef __underlying_type(E3) UTE3;
template<typename T>
struct underlying_type
{ typedef __underlying_type(T) type; };
int test1[is_same<underlying_type<E1>::type, UTE1>::value ? 1 : -1];
int test2[is_same<underlying_type<E2>::type, UTE2>::value ? 1 : -1];
int test3[is_same<underlying_type<E3>::type, UTE3>::value ? 1 : -1];
int test4[is_integral<underlying_type<E1>::type>::value ? 1 : -1];
int test5[is_integral<underlying_type<E2>::type>::value ? 1 : -1];
int test6[is_integral<underlying_type<E3>::type>::value ? 1 : -1];