Kompilatorfel C3491

"var": en bivärdesavbildning kan inte ändras i en icke-föränderlig lambda

Anmärkningar

Ett immutabelt lambda-uttryck kan inte ändra värdet för en variabel som fångas av värde.

Så här åtgärdar du det här felet

  • Deklarera ditt lambda-uttryck med nyckelordet mutable eller

  • Skicka variabeln med referens till samlingslistan för lambda-uttrycket.

Example

I följande exempel genereras C3491 eftersom brödtexten i ett icke-föränderligt lambda-uttryck ändrar avbildningsvariabeln m:

// C3491a.cpp

int main()
{
   int m = 55;
   [m](int n) { m = n; }(99); // C3491
}

Följande exempel löser C3491 genom att deklarera lambda-uttrycket med nyckelordet mutable :

// C3491b.cpp

int main()
{
   int m = 55;
   [m](int n) mutable { m = n; }(99);
}

Se även

Lambda-uttryck