1 // { dg-do compile { target c++11 } } 2 3 // Used to test that bool is a better overload match than int 4 // Updated for DR 1423 5 6 template <typename T, typename U> struct tType_equal; 7 template <typename T> struct tType_equal<T, T> { typedef void type; }; 8 9 template <typename T, typename U> 10 inline typename tType_equal<T, U>::type 11 type_equal(U) { } 12 13 int i( int ); 14 long int i( long int ); 15 bool i( bool ); 16 17 void test_i() 18 { 19 // Overload to bool, not int 20 type_equal<bool>(i(nullptr)); // { dg-error "direct" } 21 decltype(nullptr) mynull = 0; 22 type_equal<bool>(i(mynull)); // { dg-error "direct" } 23 } 24