我读到了 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(使用前将#替换为@)