コンパイラ エラー C3491
'var': 変更できないラムダでは値キャプチャは変更できません
変更できないラムダ式では、値によってキャプチャされる変数の値を変更できません。
このエラーを解決するには
mutable
キーワードでラムダ式を宣言します。または、ラムダ式のキャプチャ リストへの参照によって変数を渡します。
例
次の例では、変更できないラムダ式の本体がキャプチャ変数 m
を変更するため、C3491 が生成されます。
// C3491a.cpp
int main()
{
int m = 55;
[m](int n) { m = n; }(99); // C3491
}
次の例では、ラムダ式を mutable
キーワードで宣言することで C3491 を解決しています。
// C3491b.cpp
int main()
{
int m = 55;
[m](int n) mutable { m = n; }(99);
}