fork download
  1. // is_enum example
  2. #include <iostream>
  3. #include <type_traits>
  4.  
  5. enum A {first,second,third}; // unscoped enum (C-style)
  6. class B {};
  7. enum class C {alpha,beta,gamma}; // scoped enum (C++11-style)
  8.  
  9. int main() {
  10. std::cout << std::boolalpha;
  11. std::cout << "is same enum A and int: " << std::is_same<A, int>::value << std::endl;
  12. std::cout << "is_enum:" << std::endl;
  13. std::cout << "int: " << std::is_enum<int>::value << std::endl;
  14. std::cout << "enum A: " << std::is_enum<A>::value << std::endl;
  15. std::cout << "class B: " << std::is_enum<B>::value << std::endl;
  16. std::cout << "enum class C: " << std::is_enum<C>::value << std::endl;
  17. std::cout << "decltype(C::alpha): " << std::is_enum<decltype(C::alpha)>::value << std::endl;
  18. return 0;
  19. }
Success #stdin #stdout 0s 2896KB
stdin
Standard input is empty
stdout
is same enum A and int: false
is_enum:
int: false
enum A: true
class B: false
enum class C: true
decltype(C::alpha): true