检查枚举类是否包含特定标识符
我在 SO 上搜索了一下,很惊讶我没有找到任何类似的问题。如果已经回答了任何提示,我们很高兴。
我有一个定义了很多枚举类的代码库。其中一些指定了 totalNum 常量,例如
enum class Foo : int
{
a,
b,
c,
totalNum
}
其他人没有这样的
enum class Bar : bool
{
oneOption,
otherOption
}
然后我有一个基本上像这样的功能
template <class EnumClassType>
EnumClassType typeToEnum (typename std::underlying_type<EnumClassType>::type value)
{
// If you hit this assertion, the value is outside of the valid enum range
assert (isPositiveAndBelow (value, decltype (value) (EnumClassType::totalNum)));
return EnumClassType (value);
}
虽然这对totalNum指定的枚举有效并且有意义,但我想跳过这个断言,以防枚举中没有这样的标识符。有没有办法做到这一点?代码库目前使用 C++ 14,但由于即将进行的编译器更改,也欢迎使用 C++ 17 解决方案。