Sé std::queue::pop()
devuelve void
. Por dos razones: la seguridad¿Puede queue :: pop devolver un valor ahora?
- excepción: algo podría lanzar después de retirar el elemento
- para poder return the value by reference
fina.
Ahora si entiendo la nueva semántica de movimiento de C++ 11 correctamente, la segunda ya no es un argumento válido.
Entonces ... ¿lo único que impide que std::queue
tenga una función de tipo pop
que devuelve el valor reside en la posibilidad de que el constructor de movimiento lance?
Me resulta difícil pensar en situaciones en las que un constructor de movimientos así lanzaría. ¿Quién sabe de un ejemplo?
supongo que lo mismo vale para std::stack::pop()
, std::vector::pop_front()
, std::vector::pop_back()
, std::deque::pop_front()
, std::deque::pop_back()
, std::list::pop_front()
, std::list::pop_back()
y lo que no.
Esas son realmente dos preguntas. Un ejemplo para un constructor de movimientos arrojadizos y un 'pop' de retorno. – pmr
Necesito un ejemplo de un constructor de movimiento arrojadizo para entender por qué no podemos tener el 'pop' que regresa. –
¿Qué pasa con los tipos que no tienen un constructor de movimiento en absoluto? – jalf