【发布时间】:2015-02-27 03:49:09
【问题描述】:
当一个函数通过值接受一个参数时,它通常可以修改它。然而,这似乎不是 lambdas 的情况。为什么?
int main()
{
int x = 0;
auto lambda = [x] { x = 1; }; // error: assignment of read-only variable ‘x’
return 0;
}
【问题讨论】:
-
默认情况下,闭包的应用操作符是
const。您仍然可以使用mutable修改捕获的变量:[x]() mutable { x = 1; }另请参阅:stackoverflow.com/q/5501959