0

重複の可能性:
ネストされたテンプレートの場合、`>>` が (`> >` の代わりに) 標準 C++ になったのはいつですか?
テンプレートのテンプレート (例: vector<vector<int> >) では、C++0x より前に閉じ山括弧の間にスペースが必要だったのはなぜですか?

私は単にベクトルを作成しようとしています:

vector<Transform3D<double>> tempVector;

これは私が得るコンパイルエラーです:

/../main.cpp:34:26: error: a space is required between consecutive right angle brackets
  (use '> >')
vector<Transform3D<double>> tempVector;
                         ^~
                         > >

意味がないのは、エラーが説明するようにベクトルを変更することで問題が解決される理由です。

vector<Transform3D<double > > tempVector;

とが同一vector<Transform3D<double>>でないのはなぜですか?vector<Transform3D<double > >

4

2 に答える 2

2

>>最後の文字は単一の演算子 ( ) として解析されるため、それらは (少なくとも C++11 より前では) 同一ではありませんoperator>>。それらの間にスペースを入れると、予期される動作が発生します。

同じ状況は、コンパイラが<:tigraph/digraph の開始として解析する場合にも発生します。例えば:

N<::T> // <: parsed as [

演算子をスペースで区切ると、コードが正常に機能します。

于 2012-12-25T17:32:43.913 に答える
1

はビット シフト演算子であるため>>、新しいコンパイラでは 2 つを区別できます。

于 2012-12-25T17:32:46.650 に答える