Os exemplos que eu descobri que a captura thisem 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?
thise 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, porquethisnão seria capturado; mas quando capturandothisexplicitamente, é surpreendente para o corpo da função para aparecer de relance para não realmente usar o valor captado:[this](){ calstage1done(); }.