Примеры, которые я обнаружил, что захват this
в лямбде использует это явно; например:
capturecomplete = [this](){this->calstage1done();};
Но кажется, что это также возможно использовать неявно; например:
capturecomplete = [this](){calstage1done();};
Я проверил это в g ++, и это скомпилировано.
Это стандарт C ++? (и если да, то какая версия), или это какая-то форма расширения?
c++
lambda
this-pointer
plugwash
источник
источник
this->
явного использования , которое заключается в том, чтобы явно использовать зафиксированные значения. Обратите внимание, что[](){ calstage1done(); }
это не будет законным, потомуthis
что не будет захвачено; но при захватеthis
явно, это удивительно для функции тела , чтобы появиться на первый взгляд не на самом деле использовать захваченное значение:[this](){ calstage1done(); }
.this
и использованием его в лямбда-Ответы:
Это стандартно и так было с C ++ 11, когда были добавлены лямбды. По данным cppreference.com :
источник
Это полностью стандартно и было с тех пор, как лямбды были введены в C ++ 11.
Вам не нужно писать
this->
там.источник