我们有一个函数,使用一个非捕获 lambda 内部的自身,例如:
void foo() {
auto bar = [](int a, int b){ return a + b; }
// code using bar(x,y) a bunch of times
}
现在,lambda 实现的功能在其他地方也是需要的,因此我将把 lambda 从 foo()
提升到 global/name 空间范围。我可以将它保留为 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 离开?有什么理由不在任何地方使用 lambdas 而不使用“常规”全局函数吗?