2 つのローカル スマート ポインターがあるfooとしbarます。
shared_ptr<Foo> foo = ...
shared_ptr<Bar> bar = ...
これらのスマート ポインタは、何らかの理由でfoo、次にの順に破棄する必要があるリソースのラッパーbarです。
fooここで、 andを使用するラムダを作成したいと思いますbarが、それらを含むスコープよりも長生きします。したがって、次のように値でキャプチャします。
auto lambda = [foo, bar]() { ... };
fooこれにより、bar関数オブジェクト内のコピーが作成されます。関数オブジェクトが破棄されると、これらのコピーも破棄されますが、これが発生する順序が気になります。だから私の質問は:
ラムダ オブジェクトが破棄されるとき、その値によるキャプチャはどのような順序で破棄されますか? そして、どうすれば(できれば)この順序に影響を与えることができますか?