我一直在了解有关嵌套模板结束符号“>>”和移位运算符“>>”的相关信息。我已经在我的MSVS2010中尝试过,没有出现任何问题。
下面这段代码可以实现我想要的功能(对pair进行映射),但是我本来以为会出现一些关于“>>”的错误提示。
现在编译器变得更加智能了吗?
下面这段代码可以实现我想要的功能(对pair进行映射),但是我本来以为会出现一些关于“>>”的错误提示。
现在编译器变得更加智能了吗?
请注意,之前良好的C++03代码可能会在支持此功能的编译器中出现故障。
MyArray< MyArray<int, 16 >> 2>, 5 > arrayInst;
这将是修复方法:
MyArray< MyArray<int, (16 >> 2)>, 5 > arrayInst;
这段代码完美地实现了我的要求(一对一映射),但我本应该会遇到一些关于 >> 的错误。
C++0x 已经解决了这个问题。所以如果你在使用 MSVS2010 时没有收到任何错误提示,那也就不足为奇了,因为 MSVS2010 实现了部分 C++0x 特性。
此外,即使是在 C++03 中,很多编译器也能够处理这种情况,虽然这并不是标准(2003)所要求的。
>>
的C++0x语义。这种改变可能会破坏一些有效的C++03构造。 - CB Baileytmpl< tmpl<2 >> 1> > instance;
。通常在C++03中有效的代码,在C++0x中会变成编译错误。我还没有遇到过任何情况,导致这种情况引起行为上的静默更改。 - CB Bailey<2 >> 1>
中的 >>
解释为位移运算符吗? - Nawaz
(T)
而不是<T>
,我们都会更好。 - shuhalo