Может ли main() иметь спецификацию исключений?

В стандарте C++ может main функция имеет спецификацию исключения?

Например, законно ли следующее?

int main() noexcept {}

1 ответ

Да, это полностью законно. В стандарте C++ (в [basic.start.main], [кроме.spec] или где-либо еще) нет формулировок, запрещающих это.

Даже в C++17 и более поздних версиях, где спецификации исключений являются частью типа функции, main ограничен только в его связи и типе возврата согласно [basic.start.main # 2]:

Реализация не должна предопределять main функция. Эта функция не должна быть перегружена. Его тип должен иметь связь с языком C++ и иметь объявленный тип возвращаемого типа. int, но в остальном его тип определяется реализацией.

Другие вопросы по тегам