| // { dg-do compile { target c++11 } } |
| |
| // Test template deduction |
| |
| typedef decltype(nullptr) nullptr_t; |
| |
| template <typename T, typename U> struct tType_equal; |
| template <typename T> struct tType_equal<T, T> { typedef void type; }; |
| |
| template <typename T, typename U> |
| inline typename tType_equal<T, U>::type |
| type_equal(U) { } |
| |
| template<typename T> T h( T t ); |
| |
| void test_h() |
| { |
| type_equal<int>(h(0)); |
| type_equal<nullptr_t>(h(nullptr)); |
| type_equal<float*>(h((float*)nullptr)); |
| nullptr_t mynull = 0; |
| type_equal<nullptr_t>(h(mynull)); |
| type_equal<float*>(h((float*)mynull)); |
| } |