3

最初の例:

struct State
{
    SomeLargeObjectThatTakesTimeToCopy obj;
    int x;
} myState;

auto f = [=]() { return myState.x * 2; };

myState技術的にはxメンバーのみが使用されますが、構造体全体がコピーされますか?

2 番目の例:

struct State
{
    struct SubState
    {
        int x;
    };

    std::vector<SubState> subStates;
} myState;

auto f = [=]() { return myState.subStates[0].x * 2; };

繰り返しますが、オブジェクト全体myStateがコピーされますか? そうでない場合、subStatesメンバー全体がコピーされますか?

4

1 に答える 1

1

myStateがローカル変数 (関数の本体で定義されている) であると仮定すると、myStateキャプチャされます。lambda は変数全体をキャプチャできますが、断片的なものはキャプチャできません。

例をそのまま使用すると、何もキャプチャされません。ラムダはグローバル変数をキャプチャできません。

于 2012-11-26T18:52:00.657 に答える