2013-05-16 25 views
3

此代碼按預期方式工作:尾隨返回類型語法失敗,並帶有noexcept說明符?

void f() noexcept {} 

但接下來的失敗,出現錯誤GCC 4.7.2:

auto f() -> void noexcept {} 

// error: expected initializer before ‘noexcept’ 

文章我讀過沒有說過不能夠什麼在訓練返回類型中指定noexcept。這是一個錯誤(並且它已被修復在最新版本的GCC中)?或者這是標準禁止的嗎?

回答

10

這不是正確的語法。它應該是:

auto f() noexcept -> void { } 

每一段的C++ 11標準的8.4.1/2:

D1參數聲明子句CV-限定符-SEQ(優化)

REF-限定符(OPT) *異常規範(OPT)* 屬性說明符-SEQ(OPT) *尾返回型(OPT)*

如8.3.5所述。函數只能在名稱空間或類作用域中定義。

+0

@ 0x499602D2:很高興幫助:) –