【发布时间】:2015-07-10 12:03:30
【问题描述】:
我有一个类似的功能
for (auto&& i : v) {
...
this->fifoQueue.push_back(move(i.p));
...
}
其中fifoQueue 的类型为vector<unique_ptr<T> >,v 的类型为vector<struct s>,struct s 的类型为
struct s {
...
std::unique_ptr<T> p;
...
};
语句this->fifoQueue.push_back(move(i.p)); 导致编译器错误“... error: declared here unique_ptr(const unique_ptr&) = delete; ...”。这句话有什么问题?
我还有另一个基本相同的工作声明,除了那个声明类似于this->fifoQueue.push_back(move(p))。那么i.p是邪恶的吗?还是auto&&?
更新:
正如 Petr 推断的那样,v 确实是一个 const 引用,这导致了错误。
【问题讨论】:
标签: c++ struct unique-ptr