16
有没有确保模板参数是枚举类类型的方法?确保模板参数是一个枚举类
我知道type_traits
有std::is_enum
,但我不希望它匹配常规枚举,只是enum_classes。的希望达到的效果
例子:
enum class EnumClass {};
enum Enum {};
class Class {};
template <typename T>
void Example()
{
static_assert(/* T is EnumClass */, "`T` must be an enum class");
}
Example<EnumClass>(); // Ok
Example<Enum>(); // Error
Example<Class>(); // Error
我使用C++ 11的,可惜不能去任何更高(虽然我很好奇,反正知道解决的办法,即使它涉及到新标准)。
这可能吗?
纠正我,如果我错了,但你只是根据事实,枚举类是不隐式转换积分?难道不可能定义一个隐式转换运算符吗? –
@GiladNaaman你如何从'enum类'定义一个隐式运算符? –
是的,我的不好,你实际上不能在'enum class'中定义运算符或函数。 –