Почему 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>