C++语法错误
这里的语法有什么问题?我关注资源C++语法错误,c++,c++11,lambda,closures,C++,C++11,Lambda,Closures,这里的语法有什么问题?我关注资源 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 是正确的代码。要按值捕获变量,只需编写其名称。为了允许修改by值捕获,需要将lambda标记为可变的,
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
是正确的代码。要按值捕获变量,只需编写其名称。为了允许修改by值捕获,需要将lambda标记为可变的,否则将运算符标记为const
§5.1.2[expr.prim.lambda]p5
[…]当且仅当lambda表达式的参数声明子句后面没有mutable时,此函数调用运算符被声明为const 9.3.1。[……]
是正确的代码。要按值捕获变量,只需编写其名称。为了允许修改by值捕获,需要将lambda标记为可变的,否则将运算符标记为const
§5.1.2[expr.prim.lambda]p5
[…]当且仅当lambda表达式的参数声明子句后面没有mutable时,此函数调用运算符被声明为const 9.3.1。[……]
要增加y的值,必须通过引用捕获它。要通过值捕获,只需写入y就足够了。无需将`=y'@AdityaKumar all true写入,但OP只是试图从博客文章中编译一个示例,其中博客作者专门通过值传递了第二个参数,以表明增量的效果不会影响封闭变量,因为通过值是一个副本。默认情况下,无法修改通过值捕获。关于它的各种问题,例如@BoBTFish:我明白了-谢谢,现在已经很清楚了。要增加y的值,必须通过引用来捕获它。要通过值捕获,只需写入y就足够了。无需将`=y'@AdityaKumar all true写入,但OP只是试图从博客文章中编译一个示例,其中博客作者专门通过值传递了第二个参数,以表明增量的效果不会影响封闭变量,因为通过值是一个副本。默认情况下,无法修改通过值捕获。关于它的各种问题,例如@BoBTFish:我明白了-谢谢,现在很清楚了。你的实例使用C++11,这是有效的C++03语法吗?@Wolf问题是关于lambdas的。你的实例使用C++11,这是有效的C++03语法吗?@Wolf问题是关于lambdas的。
char x = 'a', y = 'a';
[&x,y]() mutable{
++x; ++y;
}();