У меня есть enum с некоторыми значениями и структура, которая преобразует его в тип.
enum class Types : uint8_t {
...
};
template<Types type>
struct enum_ {
...
}
У меня также есть основной шаблонный класс Action, который является лямбда-подобной структурой с перегруженным оператором (), в зависимости от переданных типов
template<typename...>
struct Action;
template<typename T>
struct Action<T> { ... };
template<typename T, typename R>
struct Action<T, R> { ... };
Проблема в том, что некоторые параметры шаблона могут быть перечислениями (например, T = enum_<Types::type>
)
Можно ли сделать что-то подобное:
template<typename... Args>
using ActionType = Action<Args...>;
template<Types type, typename... Args>
using ActionType = Action<enum_<type>, Args...>;
, поэтому в этом случае T
является необязательным типом перечисления. Я теперь могу использовать вот так ActionType<enum_<Types::type>, ...>
, но мне интересно, есть ли у этой проблемы обходной путь.