Przykłady, które znalazłem, że chwytanie this
w lambda używa tego wprost; na przykład:
capturecomplete = [this](){this->calstage1done();};
Ale wydaje się, że możliwe jest również użycie go w sposób dorozumiany; na przykład:
capturecomplete = [this](){calstage1done();};
Przetestowałem to w g ++ i skompilowałem.
Czy to jest standardowy C ++? (a jeśli tak, to która wersja), czy jest to jakaś forma rozszerzenia?
c++
lambda
this-pointer
płyn do płukania
źródło
źródło
this->
jawnego użycia , który ma na celu zagwarantowanie, że jawnie przechwycone wartości zostaną użyte jawnie. Pamiętaj,[](){ calstage1done(); }
że nie byłoby to zgodne z prawem, ponieważthis
nie zostałoby schwytane; ale podczas robieniathis
wyraźnie, że to zaskakujące dla organizmu funkcji, aby pojawić się na pierwszy rzut oka nie do faktycznie korzysta z przechwyconego wartość:[this](){ calstage1done(); }
.this
i używaniem go wOdpowiedzi:
Jest to standard i tak było od C ++ 11, kiedy dodano lambdy. Według cppreference.com :
źródło
Jest to całkowicie standardowe i było od czasu wprowadzenia lambdów w C ++ 11.
Nie musisz
this->
tam pisać .źródło