Partager via


Erreur du compilateur C3491

'variable' : impossible de modifier une capture par valeur dans une expression lambda non mutable

Une expression lambda non mutable ne peut pas modifier la valeur d’une variable capturée par valeur.

Pour corriger cette erreur

  • Déclarez votre expression lambda avec le mot clé mutable , ou

  • Passez la variable par référence à la liste de capture de l’expression lambda.

Exemples

L’exemple suivant génère l’erreur C3491, car le corps d’une expression lambda non mutable modifie la variable de capture m:

// C3491a.cpp

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

L’exemple suivant résout l’erreur C3491 en déclarant l’expression lambda avec le mot clé mutable :

// C3491b.cpp

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

Voir aussi

Expressions lambda