c++ 展开可变参数模板折叠表达式

igetnqfo  于 2023-05-08  发布在  其他
关注(0)|答案(1)|浏览(205)
template<typename... Ts>
using Type = std::variant<std::shared_ptr<T1>, std::shared_ptr<T2>, std::shared_ptr<Tn>>;

如何使用可变参数模板和折叠表达式来实现这一点?
我尝试这样做:

template<typename... Ts>
using Type = std::variant<((std::shared_ptr<Ts>), ...)>;`

但编译不了

xriantvc

xriantvc1#

下面是compiled

template<typename... Ts>
using Type = std::variant<std::shared_ptr<Ts>...>;

正如这里所说
后面跟着省略号的模式(其中至少一个参数包的名称至少出现一次)被扩展为零个或多个模式的逗号分隔示例化,其中参数包的名称被包中的每个元素替换,按顺序
这里我们的模式是std::shared_ptr<Ts>,它被扩展为std::shared_ptr<T1>, std::shared_ptr<T2>, std::shared_ptr<Tn>

相关问题