C ++如何衰减强类型枚举?

时间:2019-11-21 00:32:07

标签: c++ enums

可能有必要衰减强类型枚举。 怎么做?

1 个答案:

答案 0 :(得分:0)

template<typename T, typename U = bool >
struct DecayEnum { using type = T; };

template<typename T>
struct DecayEnum<T, std::enable_if_t<std::is_enum<T>::value, bool> > {
    using type = typename std::underlying_type<T>::type;
};

template <typename T>
typename DecayEnum<T>::type EnumIntegralValue(T& value) {
    return static_cast<typename DecayEnum<T>::type>(value);
}