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