Como mover elementos da fila de prioridade STL
A fila de prioridade STL do C ++ possui um método pop vazio () e um método const ref top (). Portanto, se você quiser mover elementos para fora da fila, precisará fazer algo assim:
T moved = std::move(const_cast<T&>(myQueue.top())));
myQeue.pop();
Isso efetivamente converte o topo em não uma constante, para que possa ser movido (em vez de copiado). Não gosto desse código, porque a movimentação forçada pode invalidar os invariantes da fila de prioridade, quedevemos não importa por causa do pop, mas as coisaspoderia dar errado.
Existe uma maneira melhor de realizar o pop / move? Por que não existe a função T&& top_and_pop ()?