L' mutable
mot clé s'applique à l'objet généré par l'expression lambda et non pas individuellement les éléments capturés afin qu'il puisse être mis en œuvre par le compilateur à l'aide d'un const
modificateur sur l' operator()
méthode décrite dans la section 5.1.2, paragraphe 5 de la norme.
Cet appel de fonction de l'opérateur est déclarée const (9.3.1) si et seulement si
le lambdaexpression du paramètre-déclaration de la clause n'est pas suivie par
mutable.
Dans votre exemple, la classe générée par l'expression lambda pourrait ressembler à ceci:
class lambda
{
int a, b;
public:
lambda( int a, int b ) : a( a ), b( b ) {}
void operator()() // non-const due to mutable keyword
{
a = 7;
}
};