Cómo mover elementos fuera de la cola de prioridad STL
La cola de prioridad STL de C ++ tiene un método void pop () y un método const ref top (). Por lo tanto, si desea mover elementos fuera de la cola, debe hacer algo como esto:
T moved = std::move(const_cast<T&>(myQueue.top())));
myQeue.pop();
Esto convierte efectivamente la parte superior en no una constante, por lo que se puede mover (en lugar de copiar). No me gusta este código, porque el movimiento forzado puede invalidar a los invariantes de la cola de prioridad, quedebería no importa por el pop, pero las cosaspodría ir mal.
¿Hay una mejor manera de lograr el pop / move? ¿Por qué no hay una función T && top_and_pop ()?