// { dg-do compile } struct B { }; union U { }; template struct underlying_type { typedef __underlying_type(T) type; }; // { dg-error "not an enumeration" } __underlying_type(int) i1; // { dg-error "not an enumeration|invalid" } __underlying_type(A) i2; // { dg-error "expected|type" } __underlying_type(B) i3; // { dg-error "not an enumeration|invalid" } __underlying_type(U) i4; // { dg-error "not an enumeration|invalid" } underlying_type::type i5; underlying_type::type i6; // { dg-error "not declared|template|expected" } underlying_type::type i7; underlying_type::type i8;