fork(5) download
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. #include <type_traits>
  5.  
  6. template <typename T>
  7. struct foo
  8. {
  9. template <typename U = T>
  10. typename std::enable_if<false == std::is_same<U, long>::value>::type
  11. bar1 (int)
  12. {cout<<"bar1\n"; }
  13.  
  14. template <typename U = T>
  15. typename std::enable_if<false == std::is_same<U, long>::value, int>::type
  16. bar2 ()
  17. { cout<<"bar2\n"; return 0; }
  18. };
  19.  
  20. int main()
  21. {
  22. foo<int> fi;
  23. foo<long> fl;
  24.  
  25. fi.bar1(0); // compile
  26. fi.bar2(); // compile
  27.  
  28. fl.bar1<int>(0); // compilation error
  29. // fl.bar2(); // compilation error
  30. }
  31.  
Success #stdin #stdout 0s 4436KB
stdin
Standard input is empty
stdout
bar1
bar2
bar1