Скажем, у меня есть два локальных интеллектуальных указателя, foo и bar.
shared_ptr<Foo> foo = ...
shared_ptr<Bar> bar = ...
Эти интеллектуальные указатели представляют собой оболочки вокруг ресурсов, которые по какой-то причине должны быть разрушены в порядке foo, а затем bar.
Теперь я хочу создать лямбду, которая использует foo и bar, но переживает область, содержащую их. Поэтому я бы захватил их по значению, например:
auto lambda = [foo, bar]() { ... };
Это создает копии foo и bar внутри объекта функции. Когда объект функции будет разрушен, эти копии также будут уничтожены, но я забочусь о порядке, в котором это происходит. Поэтому мой вопрос:
Когда объект лямбда разрушен, в каком порядке уничтожаются его значения по величине? И как я могу (надеюсь) повлиять на этот порядок?