fork(4) download
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. template<typename T>
  5. using IsEnumConcept = std::enable_if_t<std::is_enum<T>::value>;
  6. template<typename T>
  7. using IsNotEnumConcept = std::enable_if_t<!std::is_enum<T>::value>;
  8.  
  9. template<typename T, class = IsEnumConcept<T>>
  10. //template<typename T>
  11. //IsEnumConcept<T> out()
  12. void out()
  13. {
  14. cout<<"for enum\n";
  15. }
  16.  
  17. template<typename T, class = IsNotEnumConcept<T>>
  18. //template<typename T>
  19. //IsNotEnumConcept<T> out()
  20. void out()
  21. {
  22. cout<<"for other\n";
  23. }
  24.  
  25. enum class MyEnum{};
  26.  
  27. int main() {
  28. out<MyEnum>();
  29. out<int>();
  30. // your code goes here
  31. return 0;
  32. }
Compilation error #stdin compilation error #stdout 0s 15232KB
stdin
Standard input is empty
compilation info
prog.cpp:20:6: error: redefinition of ‘template<class T, class> void out()’
 void out()
      ^~~
prog.cpp:12:6: note: ‘template<class T, class> void out()’ previously declared here
 void out()
      ^~~
prog.cpp: In function ‘int main()’:
prog.cpp:29:11: error: no matching function for call to ‘out()’
  out<int>();
           ^
prog.cpp:12:6: note: candidate: template<class T, class> void out()
 void out()
      ^~~
prog.cpp:12:6: note:   template argument deduction/substitution failed:
stdout
Standard output is empty