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吗?
使用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)