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