Salut tous le monde,
Je viens de terminer la lecture du chapitre sur les lambdas, et j’avoue avoir appris bcp de choses lors de sa lecture. En le lisant et en faisant des petits tests, j’ai pris quelques notes :
-
Une variable capturée par copie est de type constante peu importe si la variable que la lambda capture est constante ou non.
-
Si la variable que la lambda capture (par copie) est de type non-constante
- alors on peut modifier la variable capturée si on utilise le mot clé
mutable
- alors on peut modifier la variable capturée si on utilise le mot clé
-
Si la variable que la lambda capture (par copie) est de type constante
- alors on ne peut pas modifier la variable capturée même si le mot clé
mutable
est utilisé
- alors on ne peut pas modifier la variable capturée même si le mot clé
Mtn voici le code qui est à l’origine de deux derniers remarques ci-dessous :
#include <iostream>
int main ()
{
int const entier { 3 };
auto lambda { [entier] () mutable -> void
{
entier = 6;
std::cout << "entier lambda vaut : " << entier << std::endl;
}
};
lambda ();
return 0;
}
Dans la première remarque, j’ai eu une explication du cours en citant Herb Sutter et cela m’a suffit.
En ce qui concerne la deuxième remarque, je la trouve logique, normale. Alors que la troisième remarques, je ne vois pas la logique qui est derrière ceci : après tout, dans les 2 cas c’est une copie qu’on essaye de modifier avec mutable
)
J’espère avoir été clair sur mon incompréhension, et que qqn pourra m’expliquer en des termes simples ceci. Merci pour votre temps.