我进入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
吗?
答案 0 :(得分:5)
所以这意味着,如果
arrSource[]
是const
,它也会i
const
吗?
是的,如果数组是const,则数组中的每个元素也是const。
auto&
根据初始值推断出类型,在这种情况下,它被推断为int const&
,因此无法修改。
可能不需要增量(不确定你的意图)。基于范围的for
循环负责迭代之间的递增。
如果要修改数组(通过i
),则需要删除const
。
答案 1 :(得分:2)
N4567§3.9.3[basic.type.quali fi er] p6
应用于数组类型的Cv-quali firs附加到底层元素类型,因此符号“ cv T”,其中 T是一个数组类型,指的是一个元素是如此合格的数组。元素为的数组类型 cv-quali fi ed也被认为具有与其元素相同的cv-quali cations。