42. Как замыкание захватывает value type: копией или ссылкой?Теория
Дополнительные вопросы
1. Меняет ли список захвата способ захвата value type?
2. Когда компилятор копирует value type и не держит на него ссылку?
1. Меняет ли список захвата способ захвата value type?
2. Когда компилятор копирует value type и не держит на него ссылку?
Без списка захвата замыкание держит саму переменную, а не снимок. Если замыкание переживает функцию, переменная уезжает в коробку в куче, и поздние записи в неё видны внутри замыкания.
Копия появляется, когда значение записано в списке захвата: [point]. В замыкание попадает значение на момент создания, дальнейшие правки снаружи до него не доходят.
1. Да. Список захвата как раз и выбирает копию. Без списка замыкание связано с переменной и видит её новые значения.
2. Когда значение указано в списке захвата. Тогда компилятор копирует его при создании замыкания и дальше хранит эту копию. Без списка у убегающего замыкания остаётся ссылка на коробку с переменной.