一个简单的功能
auto f = [] (const array <GLfloat, 4> a, array <GLfloat, 4> b) {b [2] = a [2] + 5;};
无法按预期工作 - 数组 b 保持不变。
答案 0 :(得分:4)
因为您通过值传递并且只是修改复制的数组,这与外部b
无关。你必须通过参考传递:
auto f = [](const array<GLfloat, 4>& a, array<GLfloat, 4>& b) {b[2] = a[2] + 5;};
^^^^
您也应该通过引用传递给a
,以避免不必要的副本。