5

このコードは期待どおりに機能します。

void f() noexcept {}

ただし、GCC 4.7.2 では、次のコマンドはエラーで失敗します。

auto f() -> void noexcept {}

// error: expected initializer before ‘noexcept’

私が読んだ記事noexceptでは、トレーニングの戻り値の型を指定できないことについて何も述べていません。これはバグですか (GCC の最新バージョンで修正されていますか)? それとも、これは標準で明示的に禁止されていますか?

4

1 に答える 1

12

これは正しい構文ではありません。そのはず:

auto f() noexcept -> void { }

C++11 標準のパラグラフ 8.4.1/2 によると:

D1(パラメタ宣言節) cv-qualifier-seq(opt)

ref-qualifier(opt) *例外仕様(opt)*属性指定子-seq(opt) *末尾の戻り値の型(opt)*

8.3.5 で説明されているように。関数は、名前空間またはクラス スコープでのみ定義されます。

于 2013-05-16T22:10:22.013 に答える