常量数组的自动引用

Auto reference for const array

我正在学习 C++11,真的不明白为什么会这样:

const int arrSource[4] = { 5,7,6,4 };
for (auto& i : arrSource) {
    std::cout << i << " ";
    ++i; //error
}

它说 i 必须是一个可修改的左值并且 i:你不能分配给 const.

的变量

所以这意味着,如果 arrSource[]const,它也会使 i const

So it means, that if the arrSource[] is const, it makes i const too?

是的,如果数组是const,那么数组中的每个元素也是const。

auto&根据初始化器推导类型,在本例中推导为int const&,因此无法修改。

可能不需要增量(不确定您的意图)。基于范围的 for 循环负责迭代之间的递增。

如果要修改数组(通过 i),则需要删除 const.

N4567 § 3.9.3 [basic.type.quali更多] p6

Cv-qualifiers applied to an array type attach to the underlying element type, so the notation “cv T”, where T is an array type, refers to an array whose elements are so-qualified. An array type whose elements are cv-qualified is also considered to have the same cv-qualifications as its elements.