Les exemples que j'ai trouvés que la capture thisdans un lambda l'utilisent explicitement; par exemple:
capturecomplete = [this](){this->calstage1done();};
Mais il semble qu'il soit également possible de l'utiliser implicitement; par exemple:
capturecomplete = [this](){calstage1done();};
J'ai testé cela en g ++, et il a compilé.
Est-ce du C ++ standard? (et si oui, quelle version), ou s'agit-il d'une forme d'extension?
thiset son utilisation dans un lambda, ce qui pourrait également être une raison de l'utiliser explicitement
this->explicitement, qui est de s'assurer que les valeurs explicitement capturées sont utilisées explicitement. Notez que[](){ calstage1done(); }ce ne serait pas légal, carthisne serait pas capturé; mais lors de la capturethisexplicitement, il est surprenant pour le corps de la fonction semble un coup d' oeil de ne pas utiliser réellement la valeur capturée:[this](){ calstage1done(); }.