keb*_*ebs 8 c++ gcc for-loop c++11
我刚刚发现这个没有错误编译好(gcc 5.3):
std::vector<whatever> vec;
for( e: vec )
// do something
Run Code Online (Sandbox Code Playgroud)
所有编译器都会发出此警告:
警告:基于范围的for循环没有类型说明符,仅适用于-std = c ++ 1z或-std = gnu ++ 1z
有人能解释一下:
auto而不是键入它,或者还有更多吗?)该提议(尚未被接受,因此它未被安排成为该语言的官方部分)是当您省略了类型说明符时,类型说明符将等效auto &&,因此您的for循环将等效于:
std::vector<whatever> vec;
for( auto &&e: vec )
// do something
Run Code Online (Sandbox Code Playgroud)
有关进一步的详细信息,例如(当前)标准的动机和具体影响,请参阅提案N3853.
为了完整性:C++ 1z是用于C++ 17的代码名称.它是偶然出现的:成为C++ 11的内容在很长一段时间内被称为"C++ 0x".当它接近完成时,人们想要一种方式来参考下一个版本,所以他们增加了x(最初只代表"一些未知数字")y.在那之后,很明显,来了z,给予C++1z.
| 归档时间: |
|
| 查看次数: |
880 次 |
| 最近记录: |