“enum class”是 C++ 中的类类型吗?

2024-04-09

我读到了 C++ 中的枚举声明,使用参考参数 http://en.cppreference.com/w/cpp/language/enum.

然后我做了枚举类并使用检查它是否是类类型std::is_class.

#include <iostream>

enum class Enum 
{
    red = 1, blue, green
};

int main() 
{
    std::cout << std::boolalpha;
    std::cout << std::is_class<Enum>::value << '\n';
}

然后我编译并运行G++Linux平台上的编译器,它打印false value.

So Is enum类别类型与否?如果枚举是类类型,那么为什么我会得到false value?


enum class不是一个class定义 - 关键字的组合用于定义范围枚举,这是一个完全独立的实体class.

std::is_class正确返回false这里。如果你使用std::is_enum,它将返回true.


从标准来看 http://eel.is/c++draft/dcl.enum#2:

仅使用枚举键声明的枚举类型enum是一个无作用域枚举,它的枚举器也是无作用域枚举器。枚举键enum class and enum struct语义上是等价的;使用其中之一声明的枚举类型是作用域枚举,并且其枚举器是作用域枚举器。

没有提到enum class成为一个"class type"标准中的任何地方。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

“enum class”是 C++ 中的类类型吗? 的相关文章

随机推荐