这里的语法有什么问题?我关注this资源。
char x = 'a', y = 'a';
[&x,=y]() { // error: expected identifier before '=' token
++x; ++y; // error: 'y' is not captured
}();
我使用带有-std=c++0x
澄清:我想按价值传递y
。
答案 0 :(得分:4)
char x = 'a', y = 'a';
[&x,y]() mutable{
++x; ++y;
}();
是否是正确的代码。要捕获可变的按值,只需写下其名称即可。要允许修改按值捕获,需要将lambda标记为mutable
,否则将operator()
标记为const
。
§5.1.2 [expr.prim.lambda] p5
[...]此函数调用运算符声明为
const
(9.3.1)当且仅当 lambda-expression 的参数声明子句< / em>后面没有 mutable 。 [...]