std::function<int()> void f1()
{
int a, b, c, d, ..., x, y, z;
return [=] { return a + b + c; };
}
对比
std::function<int()> void f2()
{
int a, b, c, d, ..., x, y, z;
return [a, b, c] { return a + b + c; };
}
不用说,前者比后者更短、更方便、更优雅。
但是,我仍然担心:
从性能的角度来看,后者总是优于前者吗?
标准是否保证 lambda 表达式仅捕获必要的变量?即在前一个示例中,仅捕获了 a、b、c,未捕获到未使用的变量 d、...、x、y、z。