【问题标题】:how to do initialization in range-based for loop如何在基于范围的 for 循环中进行初始化
【发布时间】:2018-11-13 16:03:15
【问题描述】:

我正在尝试在基于范围的 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
}

效果一样好。

【问题讨论】:

  • 您链接的文档是对标准未来更改的提议。我不知道目前有任何编译器允许该语法。
  • range-for 中的初始化据说会出现在未来的 C++20 标准中..
  • 你从哪里得到符合 C++20 的编译器?
  • @SergeyA 后巷。来自一个带着飞行德洛伦的老家伙。
  • @user4581301 分享会很贴心 :'(

标签: c++ for-loop foreach compiler-errors


【解决方案1】:

这种语法据说是即将推出的 C++20 标准的一部分,请参阅 https://en.cppreference.com/w/cpp/language/range-for

目前没有符合 C++20 标准的编译器,难怪会出现编译错误。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-10-31
    • 1970-01-01
    • 2017-03-20
    • 1970-01-01
    • 2013-01-04
    • 1970-01-01
    • 2015-03-30
    • 2014-12-06
    相关资源
    最近更新 更多