В стандарте C ++ может main
функция имеет спецификацию исключения?
Например, законно ли следующее?
int main() noexcept {}
Да, это полностью законно. Там нет формулировки в стандарте C ++ (в [Basic.start.main], [Except.spec], или в другом месте), что запрещает это.
Даже в C ++ 17 и более поздних версиях, где спецификации исключений являются частью типа функции, main
ограничен только в его связи и типе возврата в соответствии с [Basic.start.main # 2]:
Реализация не должна предопределять
main
функция. Эта функция не должна быть перегружена. Его тип должен иметь связь с языком C ++ и иметь объявленный тип возвращаемого типа.int
, но в остальном его тип определяется реализацией.
Других решений пока нет …