3

第一个例子:

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

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

整个myState结构是否被复制,即使从技术上讲,只x使用了成员?

第二个例子:

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 只能捕获整个变量,而不是点点滴滴。

如果您按原样获取示例,则不会捕获任何内容;lambdas 无法捕获全局变量。

于 2012-11-26T18:52:00.657 回答