为什么shared_ptr的vector的定义可以通过编译器检查?

时间:2012-01-10 17:05:58

标签: c++ visual-studio-2008 boost

我在遗留代码中看到了以下定义:

std::vector<boost::shared_ptr<ClassNameAAA>> vecClass;

我可以用VS2008编译它没有问题。

问题&GT;我的理解是应该使用以下行:

std::vector<boost::shared_ptr<ClassNameAAA> > vecClass;

                                           ^ Add a space here  

我对此是否正确?如果有,为什么VS2008允许这个?

谢谢

2 个答案:

答案 0 :(得分:4)

这是几个MS扩展中的一个。

  

我对此是否正确?

是的,你的理解是正确的。 >>将被解析为右移运算符。

但是C ++ 11支持right-angle brackets


答案 1 :(得分:1)

由于语言扩展,MSVC ++ 2008能够解析此问题。

许多编译器都具有最终成为该语言一部分的功能的扩展。现在,在新的C ++ 11标准中,需要能够解析没有空格的嵌套模板声明。