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
, ouPassez 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);
}