fork download
  1. #include <iostream>
  2. #include <utility>
  3.  
  4. template<typename T, typename U = typename T::type> //デフォルト引数あり
  5. std::true_type test(int);
  6.  
  7. template<typename T>
  8. std::false_type test(long);
  9.  
  10. template<typename T>
  11. struct Test : decltype(test<T>(0)) {};
  12.  
  13. struct have { typedef char type; };
  14. struct nhave { typedef char tYPe; };
  15.  
  16. int main() {
  17. std::cout << "Test<have>::value = " << Test<have>::value << std::endl;
  18. std::cout << "Test<nhave>::value = " << Test<nhave>::value << std::endl;
  19. return 0;
  20. }
Success #stdin #stdout 0s 3340KB
stdin
Standard input is empty
stdout
Test<have>::value = 1
Test<nhave>::value = 0