检查枚举类是否包含特定标识符

我在 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 解决方案。

以上是检查枚举类是否包含特定标识符的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>