fork(3) download
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. template <template <typename, typename...> typename trait_t, typename arg_t>
  5. struct BindFirst
  6. {
  7. template <typename... arg_ts>
  8. using result_t = trait_t<arg_t, arg_ts...>;
  9. };
  10.  
  11. template <typename... Args>
  12. using IsDouble = BindFirst<std::is_same, double>::result_t<Args...>;
  13.  
  14. template <typename T>
  15. template <typename U>
  16. using IsSameAs = std::is_same<T, U>;
  17.  
  18. template <typename T>
  19. using IsDouble2 = IsSameAs<double>;
  20.  
  21. int main()
  22. {
  23. std::cout << IsDouble<int>::value << std::endl;
  24. std::cout << IsDouble<double>::value << std::endl;
  25.  
  26. std::cout << IsDouble2<int>::value << std::endl;
  27. std::cout << IsDouble2<double>::value << std::endl;
  28.  
  29. return 0;
  30. }
Success #stdin #stdout 0s 15240KB
stdin
Standard input is empty
stdout
0
1
0
1