在C ++ 17中,有一种方法可以指定一个变体,其中该变体中的每个条目都已经以某种重复的方式从可变参数模板中进行了修改?
特别是,我想声明一个看起来像这样的模板,声明一个std::variant
成员,例如:
template<typename... Args> class Contains {
...
std::variant<...> choices;
...
}
例如,Contains<Type1, Type2, Type3,....>
的choices
成员为std::variant<const Type1 *, const Type2 *, const Type3 *, ....>
。其中提供的类型不一定共享相同的基本类。也就是说,模板提供的每种类型都将成为std :: variant中的const指针。
我知道我可以直接将传递给模板的每个条目直接直接指定为必要的指针类型,我想知道是否存在某种方法可以使用可变参数模板,使声明仅使用基本类型的名称就更容易输入Contains
模板?
简单地做:
template <typename... Args>
class Contains
{
std::variant<const Args*...> choices;
};
只需在const
类的choices
声明中提供与Contains
修饰符相同的类型。
template <typename... Args>
class Contains
{
std::variant<const Args*...> choices;
};
}