16
テンプレートパラメータがenum-class型であることを確認する方法はありますか?テンプレートパラメータがenumクラスであることを確認
私はtype_traits
がstd::is_enum
であることを知っていますが、通常のenumと一致するようにはしません。ちょうどenum_classesです。指名手配効果の
例:
enum class EnumClass {};
enum Enum {};
class Class {};
template <typename T>
void Example()
{
static_assert(/* T is EnumClass */, "`T` must be an enum class");
}
Example<EnumClass>(); // Ok
Example<Enum>(); // Error
Example<Class>(); // Error
私はC++ 11を使用しています、と私はそれが新しい基準を必要とする場合でも、とにかく解決策を知りたいだろうけれども、残念ながら(任意の上位に行くことができません)。
可能ですか?
は、私を修正していますが、単に列挙クラスは暗黙的に変換されないという事実に依存しています積分に?暗黙的な変換演算子を定義することはできませんか? –
@GiladNaaman 'enum class'からどのように暗黙の演算子を定義しますか? –
ええ、私の悪いことに、実際には 'enum class'の中で演算子や関数を定義することはできません。 –