Я знаю, что std::queue::pop() возвращает void. По двум причинам:
- безопасность исключений: что-то может выкинуть после удаления элемента
- чтобы иметь возможность вернуть значение по ссылке
Fine.
Теперь, если я правильно понимаю новую семантику перемещения С++ 11, вторая больше не является допустимым аргументом.
Итак... единственное, что предотвращает std::queue, чтобы функция pop, возвращающая значение, была в том, что конструктор перемещения бросает?
Мне тяжело думать о ситуациях, когда такой конструктор движений будет бросать. Кто знает пример?
Я думаю, что то же самое можно сказать о 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(), а что нет.