0
是否有可能创建一个模板,推断枚举类值模板参数的基础枚举类类型?我正在寻找像下面这样的非工作伪示例:从枚举类的值模板参数推导枚举类的类型?
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);
我知道下面的作品,但它要求我明确指定枚举类类型作为第二个模板参数:
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