2

这里的语法有什么问题?我关注这个资源。

char x = 'a', y = 'a';

[&x,=y]() { // error: expected identifier before '=' token
  ++x; ++y; // error: 'y' is not captured
}();

我使用 MinGW g++ 4.5.2 命令行编译器-std=c++0x

澄清:我想y通过价值。

4

1 回答 1

4
char x = 'a', y = 'a';

[&x,y]() mutable{
  ++x; ++y;
}();

活生生的例子。

是正确的代码。要捕获变量按值,只需写下它的名称。为了允许修改按值捕获,lambda 需要被标记mutable,否则operator()被标记const

§5.1.2 [expr.prim.lambda] p5

const[...]当且仅当lambda-expressionparameter-declaration-clause后面没有mutable时,才声明此函数调用运算符(9.3.1) 。[...]

于 2012-08-08T14:43:10.447 回答