Малоизвестная, но почти никогда не используемая функция C ++ получает объявление:
void foo();
Одно возможное юридическое определение может быть таким:
void foo() try {
throw 42;
}
catch(...) {
}
Здесь обернутая реализация всей функции выглядит так: внутри пары try
/ catch
, что похоже на разрешение this .
Законно ли это делать для int main ()
? Например:
int main() try {
throw 42;
}
catch(...) {
}
Правила для main , n3290 § 3.6.1 в основном говорят о том, какие аргументы он должен принимать и что он возвращает - похоже, они явно не запрещают это, как это делается с различными другими странными вещами (например, связей), у вас может возникнуть соблазн попробовать.
Законно ли это и хорошо ли определено?