Die Beispiele, die ich gefunden habe, dass Capture thisin einem Lambda es explizit verwenden; z.B:
capturecomplete = [this](){this->calstage1done();};
Es scheint aber auch möglich zu sein, es implizit zu verwenden. z.B:
capturecomplete = [this](){calstage1done();};
Ich habe dies in g ++ getestet und es kompiliert.
Ist das Standard C ++? (und wenn ja, welche Version) oder handelt es sich um eine Erweiterung?
thisund Verwendung in einem Lambda hatte, was auch ein Grund sein könnte, es explizit zu verwenden
this->explizite Verwendung , nämlich sicherzustellen, dass explizit erfasste Werte explizit verwendet werden. Beachten Sie, dass[](){ calstage1done(); }dies nicht legal wäre, dathises nicht erfasst würde. Bei derthisexpliziten Erfassung ist es jedoch überraschend, dass der Funktionskörper auf einen Blick erscheint und den erfassten Wert nicht tatsächlich verwendet :[this](){ calstage1done(); }.