Udostępnij za pomocą


Błąd kompilatora C3491

"var": przechwytywanie wartości bajtowej nie może być modyfikowane w nie modyfikowalnym lambda

Uwagi

Nie modyfikowalne wyrażenie lambda nie może modyfikować wartości zmiennej przechwyconej przez wartość.

Aby poprawić ten błąd

  • Zadeklaruj wyrażenie lambda za pomocą słowa kluczowego mutable lub

  • Przekaż zmienną, odwołując się do listy przechwytywania wyrażenia lambda.

Example

Poniższy przykład generuje kod C3491, ponieważ treść wyrażenia lambda nie modyfikowalnego modyfikuje zmienną mprzechwytywania :

// C3491a.cpp

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

Poniższy przykład rozwiązuje problem C3491, deklarując wyrażenie lambda za pomocą słowa kluczowego mutable :

// C3491b.cpp

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

Zobacz też

Wyrażenia lambda