繁体   English   中英

C++17,制作一个使用依赖于模板参数的 std::variant 的可变参数模板?

[英]C++17, making a variadic template that uses an std::variant that is dependant on template params?

有没有办法在 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 *, ....> 其中提供的类型可能不一定共享一个公共基础 class。 也就是说,每个提供给模板的类型都成为 std::variant 中的 const 指针。

我知道我可以直接手动将传递给模板的每个条目指定为必要的指针类型,我想知道是否有某种方法可以使用可变参数模板来使声明更容易输入,只使用Contains的基本类型的名称模板?

只需这样做:

template <typename... Args>
class Contains
{
    std::variant<const Args*...> choices;
};

只需为Contains class 中的choices声明提供具有const修饰符的相同类型。

template <typename... Args>
class Contains
  {
    std::variant<const Args*...> choices;
  };
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM