一个鲜为人知的,但几乎从来没有使用C++的功能被赋予一个声明:功能尝试捕捉语法和主
void foo();
一个可能的,法律上的定义可能是:
void foo() try {
throw 42;
}
catch(...) {
}
这里whole function implementation wrapped is within a try
/catch
pair,这似乎与允许this相似。
这是合法的做int main()
?例如:
int main() try {
throw 42;
}
catch(...) {
}
The rules for main,n3290§3.6.1谈论的大多是应该采取什么样的参数和它返回什么 - 他们似乎并不明确禁止这样做,因为他们与其他各种奇怪的东西呢(如联系)你可能会试图尝试。
这是合法的吗?
有趣的学术问题,虽然我不确定它有很多实际用途。 http://stackoverflow.com/a/620817/10077 –
法律?技术上大多数编译器都会支持它。定义良好?不是真的,因为我当然无法想出任何理智的做法。 – AJG85
@ AJG85 - 我的意思是在“既不是未定义的行为也没有实现定义的行为”的意义上进行了定义,而不是在“经过良好测试的常见实现方式”方式 – Flexo