我应该让lambdas静止吗?

Pau*_*nta 6 lambda c++11

如果我有一个定义lambda的函数,那么每次调用函数时lamda都会被"构造"吗?我应该让它静止以防止这种情况吗?

void func(int x)
{
    static auto lambda = [&x](int y) -> bool {
        // ...
    };
}
Run Code Online (Sandbox Code Playgroud)

Hen*_*rik 6

不,不要使它静态,因为它通过引用捕获局部变量.

我不知道构建lambda的成本是多少.如果您怀疑它是性能问题:基准测试.

  • 如果lambda足够大以保证这些担忧,那么你可以将它作为一个全局函数并将捕获的值作为附加参数传递. (3认同)