C++11新特性之连续右尖括号(>>)改进
1.介绍
在C++11之前的泛型编程中,模版实例化有个很繁琐的地方,那就是连续右尖括号(>>)会被编译器解释为右移操作符,而不是模版参数表的结束。
例如:
template <typename T>
struct Fun
{
typedef T type;
};
template <typename T>
class A
{
...
};
int main(void)
{
Fun<A<int>>::type xx; //编译出错
return 0;
}
这种嵌套模版在编译过程中会出现错误,因为不支持Fun<A<int>>这种写法,需要改为Fun<A<int> >(两个右尖括号中间用一个空格分开,非常不方便)。
这种限制给程序编写造成不便,因此在C++11后就对这种连续右尖括号进行了改进,对模版的这种连续右尖括号进行单独处理。从而能正确分辨出是右移操作符还是模版参数表的结束标记,简化人们的使用。
2.总结
优点:
(1)简化了嵌套模版的使用
(2)提高了代码可读性和开发效率。
注意事项:
旧版本可能不支持,因此最好选择C++11标准以上的编译器。