Gli esempi che ho scoperto che catturare thisin 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?
thise 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éthisnon sarebbe stato catturato; ma durante la catturathisin modo esplicito, è sorprendente per il corpo della funzione ad apparire a colpo d'occhio non effettivamente utilizzare il valore catturato:[this](){ calstage1done(); }.