fork(9) download
  1. #include <iostream>
  2. #include <type_traits>
  3.  
  4. template <typename T,typename Enable=void>
  5. struct test
  6. {
  7. const char* value = "Primary";
  8. };
  9.  
  10. #if 1 // toggle this
  11.  
  12. template <typename T>
  13. struct test<T,typename std::enable_if< std::is_same<T,T>::value >::type >
  14. {
  15. const char* value = "Specialization";
  16. };
  17.  
  18. #else
  19.  
  20. template <typename T>
  21. struct test<T,typename std::enable_if< std::is_same<T,T>::value,T >::type>
  22. { /// ^
  23. const char* value = "Specialization";
  24. };
  25.  
  26. #endif
  27.  
  28. int main() {
  29. test<int> v;
  30. std::cout << v.value << std::endl;
  31. return 0;
  32. }
Success #stdin #stdout 0s 4520KB
stdin
Standard input is empty
stdout
Specialization