嵌套模板与移位运算符

时间:2011-04-24 14:39:49

标签: c++ visual-studio-2010 templates bit-shift

我一直在阅读所有知道>>作为嵌套模板的结尾,>>作为移位运算符...

现在我已经在我的MSVS2010中尝试过了,没有出现任何问题。

std::map<int, std::pair<int, int>> m;

此代码完全符合我的要求(对的映射),但我应该得到一些关于>>的错误

编译器这些天更聪明了吗?

4 个答案:

答案 0 :(得分:6)

MSVC ++ 2010支持C ++ 0x功能Right Angle Brackets

答案 1 :(得分:6)

要小心,因为之前很好的C ++ 03代码可能会破坏支持此功能的编译器。

MyArray< MyArray<int, 16 >> 2>, 5 > arrayInst;

这将是修复:

MyArray< MyArray<int, (16 >> 2)>, 5 > arrayInst;

答案 2 :(得分:4)

  

此代码完全符合我的要求(对的映射)但我应该得到一些关于&gt;&gt;

的错误

C ++ 0x修复此问题。因此,如果您没有收到MSVS2010的任何错误,那么毫无疑问,因为MSVS2010已经实现了一些C ++ 0x功能。

此外,即使使用C ++ 03,许多编译器也会处理此类情况,但标准(2003)并不要求。

答案 3 :(得分:3)

C++0x现在支持该语法而不会出错。编译器已经开始实现大多数这些功能,因此最新的Microsoft C ++编译器支持它并不奇怪。