Можно ли объявить функцию main как noexcept?

133
20 июня 2019, 04:40

Можно ли объявить функцию main как noexcept?

int main() noexcept {}

Компилируется нормально на ideone https://ideone.com/Pag79s

Answer 1

До C++17 было можно, начиная с C++17 - нельзя.

Но компиляторам разрешается поддерживать такое (как и любое другое 'нетрадиционное') объявление main.

[basic.start.main]/2

2 ... An implementation shall allow both

(2.1) — a function of () returning int and

(2.2) — a function of (int, pointer to pointer to char) returning int

as the type of main ([dcl.fct]).

Заметьте, написано "as the type of main".

noexcept является частью типа функции (начиная с С++17), так что раз он не упоминается, то ставить его нельзя.

На англоSO есть схожий вопрос: Can main() have an exception specification?

READ ALSO
Разделить строку на слова в c++

Разделить строку на слова в c++

Доброго времени суток!

90
Выравнивание std140 для unform-блоков в шейдерах (OpenGL, GLSL)

Выравнивание std140 для unform-блоков в шейдерах (OpenGL, GLSL)

Похоже, я не совсем понимаю как делать правильное выравнивание при передаче uniform-буферов в шейдер

99
Сумма элементов массива между первым и вторым отрицательными элементами

Сумма элементов массива между первым и вторым отрицательными элементами

Всем доброго времени суток! Хотел бы попросить вас о помощиНе могу понять, как сделать следующее задание

128
Чем опасен выход за границы массива?

Чем опасен выход за границы массива?

Можно ли оставлять выход за границы массива в программах? Чем это грозит? Что происходит при выходе за его границы?

162