17

C++11 では、これは有効な構文になりました。

vector<vector<float>> MyMatrix;

以前は、次のように記述する必要がありました (スペースに注意してください)。

vector<vector<float> > MyMatrix;

私の質問は、標準が最初のバージョンを許可するために使用する修正は何ですか?

>の代わりにトークンを作成するのと同じくらい簡単>>でしょうか? そうでない場合、このアプローチでうまくいかないことは何ですか?

のような形式myTemplate< x>>3 >は問題ないと思いますmyTemplate<(x>>3)>

4

1 に答える 1

22

これは、テンプレート引数を解析する際に解析規則に特別なケースを追加することで修正されました。

C++11 14.2/3: template-argument-list を解析するとき、ネストされていない最初の>ものが大なり演算子ではなく終了区切り文字として取得されます。同様に、ネストされていない最初のトークンは、 >>2 つの連続するが異なるトークンとして扱われ、その最初のトークンがtemplate-argument-list>の末尾として取得され、template-idが完成します。

于 2013-04-03T11:03:42.323 に答える