Les exemples que j'ai trouvés que la capture this
dans 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?
this
et 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, carthis
ne serait pas capturé; mais lors de la capturethis
explicitement, 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(); }
.