Я знаю, что 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()
, а что нет.