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