fork download
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. enum EnumFirst {
  5. Foo,
  6. Bar
  7. };
  8.  
  9. enum EnumSecond {
  10. Foo2,
  11. Bar2,
  12. Baz2
  13. };
  14.  
  15. template<typename T>
  16. const char *toString(int val)
  17. {
  18. if (std::is_same<T, EnumFirst>::value) {
  19. switch (val) {
  20. case EnumFirst::Foo:
  21. return "Foo";
  22. case EnumFirst::Bar:
  23. return "Bar";
  24. }
  25. } else if (std::is_same<T, EnumSecond>::value) {
  26. switch (val) {
  27. case EnumSecond::Foo2:
  28. return "Foo2";
  29. case EnumSecond::Bar2:
  30. return "Bar2";
  31. case EnumSecond::Baz2:
  32. return "Baz2";
  33. }
  34. }
  35. return "Unknown";
  36. }
  37.  
  38. int main() {
  39.  
  40. int a = 1;
  41. cout << toString<EnumFirst>(a) << endl;
  42. cout << toString<EnumSecond>(a) << endl;
  43.  
  44. return 0;
  45. }
Success #stdin #stdout 0s 4724KB
stdin
Standard input is empty
stdout
Bar
Bar2