我有一個函數,它是像的push_back(移動(struct.unique_ptr))導致編譯錯誤
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&&
?
更新:
作爲彼得推斷,v
確實是const
參考,這導致錯誤。
[MCVE](http://stackoverflow.com/help/mcve)please ... –
您確定第一個代碼中的「v」不是「const」嗎?而且'i.p'可以變成'const'還有其他地方嗎? – Petr
只是好奇,那麼'this-> fifoQueue.push_back(move(i).p)'? – fredoverflow