Is it possible to determine if a type is a scoped enumeration type?

后端 未结 1 1146
逝去的感伤
逝去的感伤 2020-11-28 12:18

Is there a type trait, or is it possible to write a type trait is_scoped_enum such that:

  • if T is a scoped enumeration,
相关标签:
1条回答
  • 2020-11-28 12:33

    I think testing if it is an enum and not implicitly convertible to the underlying type should do the trick.

    template <typename T, bool B = std::is_enum<T>::value>
    struct is_scoped_enum : std::false_type {};
    
    template <typename T>
    struct is_scoped_enum<T, true>
    : std::integral_constant<bool,
        !std::is_convertible<T, typename std::underlying_type<T>::type>::value> {};
    
    0 讨论(0)
提交回复
热议问题