我只是想创建一个向量:
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 > >
不一样?
它们不相同(至少在 C++11 之前),因为最后一个
>>
字符被解析为单个运算符 (operator>>
)。在它们之间放置空格会导致预期的行为。
编译器将
<:
解析为有向图/有向图的开头时也会发生相同的情况。例如:
N<::T> // <: parsed as [
分隔运算符的空格使代码可以正常工作。
因为
>>
是位移运算符,所以较新的编译器可以区分两者。