Condividi tramite


Errore del compilatore C3491

'var': impossibile modificare un'acquisizione per valore in un'espressione lambda non modificabile

Un'espressione lambda non modificabile non può modificare il valore di una variabile che viene acquisita per valore.

Per correggere l'errore

  • Dichiarare l'espressione lambda con la parola chiave mutable oppure

  • Passare la variabile mediante riferimento all'elenco di acquisizione dell'espressione lambda.

Esempi

L'esempio seguente genera l'errore C3491 perché il corpo di un'espressione lambda non modificabile modifica la variabile di acquisizione m:

// C3491a.cpp

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

L'esempio seguente risolve l'errore C3491 dichiarando l'espressione lambda con la parola chiave mutable :

// C3491b.cpp

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

Vedi anche

Espressioni lambda