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

因为>>是位移运算符,所以较新的编译器可以区分两者。

于 2012-12-25T17:32:46.650 回答