У меня есть структура, которая принимает значение класса enum для параметра шаблона.
template <typename EnumValue>
struct Type
{
public:
static constexpr int VALUE = static_cast<int>(EnumValue);
};
enum class MyEnum {Val1, Val2};
std::cout << Type<MyEnum::Val2>::VALUE << std::endl;
Я ожидал, что это сработает, но выдает ошибки:
error: expected primary-expression before ‘)’ token
static constexpr int VALUE = static_cast<int>(EnumValue);
error: type/value mismatch at argument 1 in template parameter list for ‘template<class EnumValue> struct Type’
std::cout << Type<MyEnum::Val2>::VALUE << std::endl;
Как это исправить ошибки без изменения параметров шаблона для Типа?
Так как я не хочу изменять входные данные шаблона, я не хочу использовать что-то вроде этого:
template <typename EnumType, EnumType EnumValue>
struct Type...