Gli esempi che ho scoperto che catturare this
in un lambda lo usano esplicitamente; per esempio:
capturecomplete = [this](){this->calstage1done();};
Ma sembra anche possibile usarlo implicitamente; per esempio:
capturecomplete = [this](){calstage1done();};
L'ho provato in g ++ e compilato.
Questo è C ++ standard? (e se sì, quale versione) o è una forma di estensione?
this
e l'utilizzo in una lambda che potrebbe anche essere un motivo per usarlo esplicitamente
this->
esplicito, ovvero garantire che i valori acquisiti in modo esplicito vengano utilizzati in modo esplicito. Nota che[](){ calstage1done(); }
non sarebbe legale, perchéthis
non sarebbe stato catturato; ma durante la catturathis
in modo esplicito, è sorprendente per il corpo della funzione ad apparire a colpo d'occhio non effettivamente utilizzare il valore catturato:[this](){ calstage1done(); }
.