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;
}();

実例。

正しいコードです。変数を値でキャプチャするには、その名前を書くだけです。値によるキャプチャを変更できるようにするには、ラムダをマークする必要がありmutableます。operator()const

§5.1.2 [expr.prim.lambda] p5

[...] この関数呼び出し演算子は、 lambda-expressionparameter-declaration-clauseの後にmutableが続かないconst場合にのみ宣言されます (9.3.1) 。[...]

于 2012-08-08T14:43:10.447 に答える