Почему std::array::front и std::array::back не являются noexcept?

Почему std::array::front() не помечен как noexcept для непустых массивов?

Почему MSVC помечает его как noexcept? Разве это не нарушение стандарта?


Ответы (1 шт):

Автор решения: AR Hovsepyan

Если std::array будет пустым, то std::array::front() (и std::array::back() тоже) вполне может генерировать исключение, но может просто вернуть значение по умолчанию, выдав при этом предупреждение. Это зависит от реализации. В VS, например, он реализован как noexcept(другие не проверял). Реализация не может знать будет ли пустым ваш массив по ходу программы? Она может только выдать исключение(предупреждение) для array<T, 0>

→ Ссылка