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