假设我有两个本地智能指针,foo
并且bar
.
shared_ptr<Foo> foo = ...
shared_ptr<Bar> bar = ...
这些智能指针是围绕资源的包装器,出于某种原因必须按顺序销毁这些资源foo
,然后bar
。
现在我想创建一个使用foo
and的 lambda bar
,但在包含它们的范围内寿命更长。所以我会按价值捕获它们,如下所示:
auto lambda = [foo, bar]() { ... };
这会在函数对象内foo
创建副本。bar
当函数对象被破坏时,这些副本也将被破坏,但我关心这发生的顺序。所以我的问题是:
当一个 lambda 对象被破坏时,它的按值捕获被破坏的顺序是什么?我如何(希望)影响这个顺序?