Obtener un unique_ptr fuera de una cola de prioridad

Estoy manteniendo un conjunto deunique_ptr instancias en unpriority_queue. En algún momento, quiero obtener el primer elemento y eliminarlo de la cola. Sin embargo, esto siempre produce un error de compilación. Ver código de ejemplo a continuación.

int main ()
{
  std::priority_queue<std::unique_ptr<int>> queue;
  queue.push(std::unique_ptr<int>(new int(42)));

  std::unique_ptr<int> myInt = std::move(queue.top());
  return 1;
}

Esto produce el siguiente error de compilación (gcc 4.8.0):

uptrtest.cpp: In function ‘int main()’: uptrtest.cpp:6:53: error: use of deleted function ‘std::unique_ptr<_Tp, _Dp>::unique_ptr(const std::unique_ptr<_Tp, _Dp>&) [with _Tp = int; _Dp = std::default_delete<int>]’    std::unique_ptr<int> myInt = std::move(queue.top());
                                                     ^ In file included from /usr/include/c++/4.8/memory:81:0,
                 from uptrtest.cpp:1: /usr/include/c++/4.8/bits/unique_ptr.h:273:7: error: declared here
       unique_ptr(const unique_ptr&) = delete;
       ^

Cambiando el código a utilizarqueue como enesta pregunta Soluciona el problema y el código se compila bien.

¿No hay manera de mantenerunique_ptrs en unpriority_queue ¿O me estoy perdiendo algo?

Respuestas a la pregunta(2)

Su respuesta a la pregunta