我们有一个函数在其内部使用了非捕获的lambda,例如:
void foo() {
auto bar = [](int a, int b){ return a + b; }
// code using bar(x,y) a bunch of times
}
现在,lambda实现的功能已在其他地方使用,因此我将把lambda移出foo()
全局/命名空间范围。我可以将其保留为lambda,使其成为复制粘贴选项,也可以将其更改为适当的功能:
auto bar = [](int a, int b){ return a + b; } // option 1
int bar(int a, int b){ return a + b; } // option 2
void foo() {
// code using bar(x,y) a bunch of times
}
将其更改为适当的功能是微不足道的,但是这使我想知道是否有某些理由不将其保留为lambda?是否有理由不只是在各处使用lambda而不是“常规”全局函数?