Merged revisions 208012,208018-208019,208021,208023-208030,208033,208037,208040-20804...
[official-gcc.git] / main / gcc / testsuite / g++.dg / cpp0x / sfinae23.C
blob53d5c9b0b2fd6bd48509b0f65675106198ef410b
1 // PR c++/48647
2 // { dg-do compile { target c++11 } }
4 template< class T >
5 T&& declval();
7 template< class T, class U >
8 decltype( true ? declval<T>() : declval<U>() ) test( int );
10 template< class T, class U >
11 void test( ... );
14 template< class T, class U >
15 struct is_same {
16   static const bool value = false;
19 template< class T >
20 struct is_same<T, T> {
21   static const bool value = true;
24 #define SA(X) static_assert ((X),#X)
26 typedef decltype( test<int*, double*>(0) ) void_expected;
27 SA ((is_same<void_expected, void>::value));
28 SA ((!is_same<void_expected, void*>::value));