LINUX.ORG.RU

История изменений

Исправление rumgot, (текущая версия) :

Все правильно. При передаче используется конструктор переноса у класса t. Который по умолчанию просто копирует члены исходного объекта в новый. Ты должен представлять лямбду со списком захвата просто как обычный функтор, члены которого - это и есть список захвата. И если их просто скопировать - то член, который содержал значение указателя this просто скопирует свое значение в соответствующий член целевого объекта. Да, там еще этот объект, полученный на основании лямбды копируется в обертку std::function, но сути это не меняет - просто дополнительное копирование добавляется.

Исходная версия rumgot, :

Все правильно. При передаче используется конструктор переноса. Который по умолчанию просто копирует члены исходного объекта в новый. Ты должен представлять лямбду со списком захвата просто как обычный функтор, члены которого - это и есть список захвата. И если их просто скопировать - то член, который содержал значение указателя this просто скопирует свое значение в соответствующий член целевого объекта. Да, там еще этот объект, полученный на основании лямбды копируется в обертку std::function, но сути это не меняет - просто дополнительное копирование добавляется.