从队列中删除unique_ptr

我想弄清楚如何在queue使用unique_ptr

 // create queue std::queue<std::unique_ptr<int>> q; // add element std::unique_ptr<int> p (new int{123}); q.push(std::move(p)); // try to grab the element auto p2 = foo_queue.front(); q.pop(); 

我明白为什么上面的代码不起作用。 由于frontfront是两个独立的步骤,因此元素不能移动。 有没有办法做到这一点?

你应该明确地说你想把指针移出队列 。 喜欢这个:

 std::unique_ptr<int> p2 = std::move(q.front()); q.pop();