22

is_scoped_enum<T>タイプ特性はありますか、または次のようなタイプ特性を書くことは可能ですか?

  • Tスコープ付き列挙であるis_scoped_enum<T>::value場合、trueおよび
  • T他のタイプの場合、 is_scoped_enum<T>::valuefalse
4

2 に答える 2

35

それが列挙型であり、基になる型に暗黙的に変換できないかどうかをテストすることでうまくいくと思います。

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> {};
于 2012-05-23T17:18:22.940 に答える