unique_ptr
を で使用できるかどうか、またどのように使用できるかを調べていますqueue
。
// 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();
上記のコードが機能しない理由は理解しています。front
&pop
は 2 つの別々のステップであるため、要素を移動できません。これを実行する方法はありますか?
ベストアンサー1
明確に伝えるべきことは、動くポインタ順番待ちから。 このような:
std::unique_ptr<int> p2 = std::move(q.front());
q.pop();