fork(1) download
  1. #include <iostream>
  2. #include <type_traits>
  3. using namespace std;
  4.  
  5. struct a { void test(); };
  6. struct b {};
  7.  
  8. template <typename T>
  9. struct HasTest{
  10. template<typename R, typename S = decltype(declval<R>().test())> static true_type Test(R*);
  11. template<typename R> static false_type Test(...);
  12. using def = decltype(Test<T>(0));
  13. };
  14.  
  15. template <typename T>
  16. void foo() {
  17. cout << conditional_t<HasTest<T>::def::value, true_type, false_type>::value << endl;
  18. }
  19.  
  20. int main() {
  21. foo<a>();
  22. foo<b>();
  23. }
Success #stdin #stdout 0s 3456KB
stdin
Standard input is empty
stdout
1
0