这是在调用函数中重用 C++11 lambda 的明智模式吗?

Kai*_*ain 1 c++ lambda c++11

我有一个我希望多次使用的 lambda,但我希望它第二次至少对一个不同的(捕获)变量进行操作。这种方法 - 在调用代码中重定向到不同变量的 lambda 中使用捕获的指针 ref - 一种正常/明智的方法吗?或者我应该使用单独的机制,还是完全不同的方法?

MyStruct ms1;
MyStruct* pActiveMyStruct = &ms1;
auto lambda = [&]( const Foo& foo, u32 index )
{
    pActiveMyStruct->sScore = foo.m_Score;
    pActiveMyStruct->DoSomethingWith( index );
};
pProcessor->ApplyLambdaOn( lambda );

MyStruct ms2;
pActiveMyStruct = &ms2;
pProcessor->ApplyLambdaOn( lambda );
Run Code Online (Sandbox Code Playgroud)

0x5*_*453 5

函数式方法是使用闭包:

MyStruct ms1, ms2;
auto makeLambda = [](MyStruct& ms) {
    return [&ms](const Foo& foo, u32 index) {
        ms.sScore = foo.m_Score;
        ms.DoSomethingWith(index);
    };
};

pProcessor->ApplyLambdaOn(makeLambda(ms1));
pProcessor->ApplyLambdaOn(makeLambda(ms2));
Run Code Online (Sandbox Code Playgroud)