Почему deque pop_front() и pop_back() не исключены? - программирование
Подтвердить что ты не робот

Почему deque pop_front() и pop_back() не исключены?

Есть ли какая-то причина, по которой std::deque pop_front() и pop_back() не noexcept в С++ 11 и выше, или это было просто забыто?

4b9b3361

Ответ 1

Если я правильно понял, стандарт не указывает noexcept на функции с узким контрактом (с предварительным условием, нарушение которого приводит к UB). N3279 и совсем недавно P0884 говорят об этом и о том, как решить, должна ли функция быть noexcept или нет (или условно).

Это относится к std::deque pop_front и pop_back но также к front и back где нет вызова деструктору. То же самое для std::vector pop_back, front и back например.