2012-01-10 28 views
0

我已经看到了如下定义整个遗留代码:为什么这个shared_ptr向量的定义可以通过编译器检查?

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

我能够用VS2008编译它W/O问题。

问题>我的理解是,以下行应该使用:

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

             ^Add a space here 

我是正确的呢?如果有的话,为什么VS2008允许这样做?

谢谢

回答

4

这是几个MS扩展之一。

我正确吗?

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

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


1

MSVC++ 2008能够解析这个,因为语言扩展。

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