1 // PR c++/89024 2 // { dg-do compile { target c++11 } } 3 4 template <class T, class U> struct same; 5 template <class T> struct same<T,T> {}; 6 7 template<class T> T&& declval(); 8 9 template<typename _To1> 10 void __test_aux(_To1); 11 12 template<typename _From1, typename _To1, 13 typename = decltype(__test_aux<_To1>(declval<_From1>()))> 14 char __test(int); 15 16 template<typename, typename> 17 int __test(...); 18 19 enum E { 20 x = decltype(__test<E, int>(0))(0) 21 }; 22 23 same<E,decltype(x)> s; 24 same<unsigned int,__underlying_type(E)> s2; // { dg-error "incomplete type" "" { target short_enums } } 25