不那么新的C++标准学习笔记 logo 不那么新的C++标准学习笔记

编译器支持最低版本要求:

  • GCC: 4.3
  • MSVC: 14.0
  • Clang: Yes

提案: N1757

C++编译器因为实现方式的原因,对右尖括号的处理不是那么智能,比如:

typedef std::vector<int> IntVector;
typedef std::list<std::vector<int> > IntVecList;
void func1(std::list<std::vector<int> > = IntVecList());
void func2(std::vector<int> = IntVector());

这里> >> > => =中间都加了空格,才得以正确编译通过,如果不加空格,编译器就会识别成错误的符号,>>是按位右移操作符,>=是大于等于比较符,>>=就不知道是识别成>> =还是> >=了。

在C++11中,对第一种情况做了改良,能够正常识别出>>了,也就是说下面这条代码也是合法的了:

typedef std::list<std::vector<int>> IntVecList;

实在是个微小的改进。

感觉不错,小额赞助一下!

Hosted by Coding Pages, 本站由 @missdeer 创建,由 Jekyll 于 2018-03-01 生成,感谢 CloudCannon 制作的theme: Edition ,感谢 Let's Encrypt 提供免费的SSL证书服务。本站点采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。© 2018