【发布时间】:2019-10-28 20:59:32
【问题描述】:
有没有办法在 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 模板?
【问题讨论】:
-
std::variant<const Args*...>
标签: c++ c++17 variadic-templates variant