fork(4) download
  1. #include <iostream>
  2. #include <type_traits>
  3. #include <vector>
  4.  
  5. using namespace std;
  6.  
  7. template<typename T, typename = decltype(std::declval<T>() < std::declval<T>() )>
  8. std::true_type supports_less_than_test(const T&);
  9. std::false_type supports_less_than_test(...);
  10.  
  11. template<typename T>
  12. struct has_less_than_operator : std::integral_constant<bool, std::is_same<std::true_type,
  13. decltype(supports_less_than_test(std::declval<T>()))>::value> {};
  14.  
  15. struct foo
  16. {
  17.  
  18. };
  19.  
  20. int main() {
  21. std::vector<foo> obj;
  22. std::cout << has_less_than_operator<decltype(obj)>::value << std::endl; // should return 0
  23. //std::cout << (obj < obj) << std::endl; // compile error
  24. return 0;
  25. }
Success #stdin #stdout 0s 3456KB
stdin
Standard input is empty
stdout
1