supprimer unique_ptr de la queue

J’essaie de comprendre comment / si je peux utiliser unique_ptr dans une queue .

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

Je comprends pourquoi le code ci-dessus ne fonctionne pas. Puisque le front et le pop sont 2 étapes distinctes, l’élément ne peut pas être déplacé. Y a-t-il un moyen de faire cela?

Vous devez dire explicitement que vous souhaitez déplacer le pointeur hors de la queue . Comme ça:

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