一個鮮爲人知的,但幾乎從來沒有使用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