Os exemplos que eu descobri que a captura this
em um lambda a usam explicitamente; por exemplo:
capturecomplete = [this](){this->calstage1done();};
Mas parece que também é possível usá-lo implicitamente; por exemplo:
capturecomplete = [this](){calstage1done();};
Eu testei isso em g ++, e ele compilou.
Isso é C ++ padrão? (e, em caso afirmativo, qual versão) ou é alguma forma de extensão?
this
e usá-lo em um lambda que também pode ser uma razão para usá-lo de forma explícita
this->
explícito, que é garantir que os valores capturados explicitamente sejam usados explicitamente. Observe que[](){ calstage1done(); }
isso não seria legal, porquethis
não seria capturado; mas quando capturandothis
explicitamente, é surpreendente para o corpo da função para aparecer de relance para não realmente usar o valor captado:[this](){ calstage1done(); }
.