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
oppurePassare 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);
}