是否有一种方法可以定义带有可选特定枚举和无限类型的模板的类型?

时间:2019-05-22 13:23:58

标签: c++ templates c++14 variadic-templates

我的枚举带有一些值和将其转换为类型的结构。

enum class Types : uint8_t {
    ...
}; 

template<Types type>
struct enum_ {
    ...
}

我还有主模板类Action,这是一个类似lambda的结构,具有重载的operator(),具体取决于传递的类型

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>, ...>一样使用,但是我很感兴趣这个问题是否可以解决。

0 个答案:

没有答案