ここでの構文の何が問題になっていますか? 私はこのリソースに従います。
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
ます。
char x = 'a', y = 'a';
[&x,y]() mutable{
++x; ++y;
}();
正しいコードです。変数を値でキャプチャするには、その名前を書くだけです。値によるキャプチャを変更できるようにするには、ラムダをマークする必要がありmutable
ます。operator()
const
§5.1.2 [expr.prim.lambda] p5
[...] この関数呼び出し演算子は、 lambda-expressionのparameter-declaration-clauseの後にmutableが続かない
const
場合にのみ宣言されます (9.3.1) 。[...]