Как переместить элементы из очереди приоритетов STL
В очереди приоритетов STL в C ++ есть метод void pop () и метод const ref top (). Таким образом, если вы хотите переместить элементы из очереди, вы должны сделать что-то вроде этого:
T moved = std::move(const_cast<T&>(myQueue.top())));
myQeue.pop();
Это фактически приводит к тому, что вершина не является константой, поэтому ее можно перемещать (а не копировать). Мне не нравится этот код, потому что принудительное перемещение может сделать недействительными инварианты очереди с приоритетами, чтодолжен не имеет значения из-за популярности, но вещимог пойти не так
Есть ли лучший способ сделать поп / переезд? Почему нет функции T && top_and_pop ()?