Bjarne Stroustrup の C++11 スタイルに関する基調講演 (リンク) (00:35:30) を見ていますが、次の内容を理解するのに苦労しています (スライドからコピーされたコード)。
void f(int n, int x)
{
Gadget g {n};
// ...
if (x<100) throw std::run_time_error{"Weird!"};
if (x<200) return;
// ...
}
構造体とオブジェクトを使用してこのコードをコンパイルしようとしましたが、どちらの場合も、コンパイラは「;」が必要であると通知します。の宣言の最後にあり、Gadget g
コンパイルされません。
したがって、私の質問は次のとおりです。
g
インスタンス化されていると仮定するのは正しいですか?Gadget
このコードをコンパイルするには、どのタイプのオブジェクトが必要ですか?- この行で機能している概念は何ですか:
Gadget g {n};
? つまり、宣言の後の中括弧は何ですか? - (おそらく広すぎるかもしれませんが) なぜコンパイラは中かっこを有効な構文として認識しないのでしょうか?