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