Получение unique_ptr из очереди приоритетов

Я поддерживаю наборunique_ptr случаи вpriority_queue, В какой-то момент я хочу получить первый элемент и удалить его из очереди. Однако это всегда приводит к ошибке компилятора. Смотрите пример кода ниже.

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

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

Это приводит к следующей ошибке компилятора (gcc 4.8.0):

uptrtest.cpp: In function ‘int main()’: uptrtest.cpp:6:53: error: use of deleted function ‘std::unique_ptr::unique_ptr(const std::unique_ptr&) [with _Tp = int; _Dp = std::default_delete]’    std::unique_ptr 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;
       ^

Изменение кода для использованияqueue как вэтот вопрос решает проблему, и код компилируется просто отлично.

Нет ли способа сохранитьunique_ptrвpriority_queue или я что-то упустил?

Ответы на вопрос(2)

Ваш ответ на вопрос