我试图在基于范围的for循环中使用索引,因此我创建了如下代码。我指的是这个网站http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/p0614r0.html
#include <vector>
int main(void)
{
std::vector<double> vector1(100);
for (std::size_t _index = 0; auto& _value : vector1)
{
_value = 10 + 5; //This code is for test.
++_index;
}
return 0;
}
但是,它给了我一些错误消息(无法推断出auto的类型,不能使用未初始化的_value等。/对不起,我的语言不是英语,因此错误消息也是如此)
为什么会这样?当我使用if
语句进行这样的初始化时,
if (bool is_valid = false; is_valid)
{
//do something
}
它工作得很好。
答案 0 :(得分:0)
该语法应该是即将到来的C ++ 20标准的一部分,请参见https://en.cppreference.com/w/cpp/language/range-for
当前没有符合C ++ 20的编译器,所以难怪您会遇到编译错误。