Есть ли какая-то причина, по которой std::deque
pop_front()
и pop_back()
не noexcept
в С++ 11 и выше, или это было просто забыто?
Почему deque pop_front() и pop_back() не исключены?
Ответ 1
Если я правильно понял, стандарт не указывает noexcept
на функции с узким контрактом (с предварительным условием, нарушение которого приводит к UB). N3279 и совсем недавно P0884 говорят об этом и о том, как решить, должна ли функция быть noexcept
или нет (или условно).
Это относится к std::deque
pop_front
и pop_back
но также к front
и back
где нет вызова деструктору. То же самое для std::vector
pop_back
, front
и back
например.