enum class
is not a class
definition - the combination of keywords is used to define a scoped enumeration, which is a completely separate entity from a class
.
std::is_class
correctly returns false
here. If you use std::is_enum
, it will return true
.
From the Standard:
The enumeration type declared with an enum-key of only enum
is an unscoped enumeration, and its enumerators are unscoped enumerators. The enum-keys enum class
and enum struct
are semantically equivalent; an enumeration type declared with one of these is a scoped enumeration, and its enumerators are scoped enumerators.
There is no mention of an enum class
being a "class
type" anywhere in the Standard.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…