fork download
  1. #include <iostream>
  2.  
  3. template<typename T>
  4. using IsEnumConcept = std::enable_if_t<std::is_enum<T>::value>;
  5.  
  6. template<typename T, typename = void>
  7. struct OutImpl
  8. {
  9. void operator()() const { std::cout<<"for not enum\n"; }
  10. };
  11.  
  12. template <typename T>
  13. struct OutImpl<T, IsEnumConcept<T>>
  14. {
  15. void operator()() const { std::cout<<"for enum\n"; }
  16. };
  17.  
  18. template<typename T>
  19. void out()
  20. {
  21. OutImpl<T>()();
  22. }
  23.  
  24. enum class MyEnum{};
  25.  
  26. int main() {
  27. out<MyEnum>();
  28. out<int>();
  29. }
  30.  
Success #stdin #stdout 0s 15232KB
stdin
Standard input is empty
stdout
for enum
for not enum