Die Beispiele, die ich gefunden habe, dass Capture this
in 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?
this
und 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, dathis
es nicht erfasst würde. Bei derthis
expliziten Erfassung ist es jedoch überraschend, dass der Funktionskörper auf einen Blick erscheint und den erfassten Wert nicht tatsächlich verwendet :[this](){ calstage1done(); }
.