C++ のラムダ式でキャプチャした値を変更する
C++ のラムダ式で変数をコピーしてキャプチャした場合、その変数の値を変更する事ができません。
int n = 10; [n](){ // error n = 42; };
どうしても変更したい場合は mutable を付けることで変更することが出来るようになります。
[ソース]
#include <iostream> int main(){ int n = 10; [n]() mutable { // error n = 42; std::cout << n << std::endl; }(); std::cout << n << std::endl; return 0; }
[出力]
42 10