矢量模板问题[重复]

问题描述 投票:0回答:2

可能重复:
对于嵌套模板,`>>`什么时候成为标准C++(而不是`> >`)?

我只是想创建一个向量:

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++ vector
2个回答
2
投票

它们不相同(至少在 C++11 之前),因为最后一个

>>
字符被解析为单个运算符 (
operator>>
)。在它们之间放置空格会导致预期的行为。

编译器将

<:
解析为有向图/有向图的开头时也会发生相同的情况。例如:

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

分隔运算符的空格使代码可以正常工作。


1
投票

因为

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

© www.soinside.com 2019 - 2024. All rights reserved.