function try catch syntax and main

Малоизвестная, но почти никогда не используемая функция 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 в основном говорят о том, какие аргументы он должен принимать и что он возвращает - похоже, они явно не запрещают это, как это делается с различными другими странными вещами (например, связей), у вас может возникнуть соблазн попробовать.

Законно ли это и хорошо ли определено?

16
задан Community 23 May 2017 в 11:48
поделиться