【发布时间】:2014-05-17 05:03:16
【问题描述】:
我有一个基本类型 B 及其子类型的列表,例如 B1、B2,它们是从 B 派生的。我想开发一个函数来创建一个带有新 B1、新 B2 等元素的指针向量,喜欢
template<class BaseType, class... SubTypes>
vector<unique_ptr<BaseType>> makePtrVector()
{
vector<unique_ptr<BaseType>> v;
v.emplace_back(new SubTypes)...; // error, SubTypes has to be expanded
return v;
}
我尝试了上面的代码,但失败了。我不清楚参数包的扩展。有什么方法可以纠正它或者它只是一个编译器错误?
【问题讨论】:
-
我想你可以对in other way感兴趣,它可以在需要初始化不可复制对象的
vector时使用(没有emplace_back)。
标签: c++ templates variadic-templates