0
基礎となる列挙型クラス型のenumクラス値のテンプレートパラメータを推測するテンプレートを作成できますか?私は、次の非稼働擬似例のような何かを探しています:私は唯一つのパラメータを持つインスタンス化になりたい列挙型クラスの型を列挙型クラスのテンプレートパラメータから推測しますか?
enum class MyEnumClass { e1, e2, e3 };
template<enum class T X> MyTemplate { // wrong syntax. want to specify X, infer T
using enum_class_type = T;
static constexpr enum_class_type value = X;
};
、例えばMyTemplate<MyEnumClass::e1>
:
static_assert(std::is_same<MyTemplate<MyEnumClass::e1>::enum_class_type, MyEnumClass>::value);
static_assert(MyTemplate<MyEnumClass::e2>::value == MyEnumClass::e2);
私は、次の作品ということを知っているが、それは明示的に2番目のテンプレートパラメータとして列挙型クラスの型を指定するために私を必要とします。
template<typename EnumClass, EnumClass X>
struct EnumValue {
using enum_class_type = EnumClass;
static constexpr enum_class_type value = X;
};
// usage: EnumValue<MyEnumClass, MyEnumClass::e1>::enum_class_type