2012-09-09 74 views
0

根據ISO/IEC 14882:2011,我們不能使用拋表達式都在三元運算的第二個和第三個操作數:擲表達式在三元運算

5.16條件運算符[expr.cond]

2如果第二或第三操作數的類型爲無效,則 左值到右值(4.1),陣列到指針(4.2),和 功能到指針(4.3)標準轉換在 第二個和第三個操作數上執行,並且下列之一應爲: - 第二個或第三個操作數的 (但不是兩個)都是投擲表達式 (15.1);結果是另一種的類型,是一個價值。 - 第二個和第三個操作數都有void類型;結果是void類型的 ,並且是一個prvalue。 [注意:這包括 這兩個操作數都是throw-expressions的情況。 - 注意]

爲什麼Comeo編譯器和gcc都允許這樣的代碼?

int main() 
{ 
    true ? throw 0 : throw 1; 
} 

回答

2

仔細閱讀,標準並不禁止它,它甚至指出它在說明中。

+0

我們可以扔課嗎?也許是一個文件?我的意思是文件的變量:) –

+0

@tuğrulbüyükışık - 你不能扔課。你可以拋出**類的**對象**。 –