枚举成员值的类型特征

Cro*_*man 1 c++ type-traits c++17

我有一个类型特征来检查 是否enum class包含名为None.

template<typename T, typename = void>
    struct has_none : std::false_type
    {
    };

template<typename T>
struct has_none<T,
    std::void_t<decltype(T::None)>> : std::true_type {};
Run Code Online (Sandbox Code Playgroud)

此检查将与std::is_enum_v. 问题是,我将如何创建一个type_trait来检查 的Enum::None值为0?在谈论时甚至可能type_traits吗?

Hol*_*Cat 6

使用std::enable_if

template <typename T, typename = void>
struct has_none : std::false_type {};

template <typename T>
struct has_none<T, std::enable_if_t<T::None == T(0)>> : std::true_type {};
Run Code Online (Sandbox Code Playgroud)