Teilen über


Compilerfehler C3491

"Var": Eine Erfassung nach Wert kann in einem nicht änderbaren Lambda nicht geändert werden.

Bemerkungen

Ein nicht änderbarer Lambda-Ausdruck kann den Wert einer Variablen nicht ändern, die nach Wert erfasst wird.

So beheben Sie diesen Fehler

  • Deklarieren Sie den Lambda-Ausdruck mit dem mutable -Schlüsselwort, oder

  • übergeben Sie die Variable per Verweis an die Erfassungsliste des Lambda-Ausdrucks.

Example

Im folgenden Beispiel wird C3491 generiert, da der Text eines nicht änderbaren Lambda-Ausdrucks die Erfassungsvariable mändert:

// C3491a.cpp

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

Im folgenden Beispiel wird der Fehler C3491 durch Deklarieren des Lambda-Ausdrucks mit dem mutable -Schlüsselwort behoben:

// C3491b.cpp

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

Siehe auch

Lambda-Ausdrücke