Tínhamos uma função que usava um lambda não captador interno para si mesmo, por exemplo:
void foo() {
auto bar = [](int a, int b){ return a + b; }
// code using bar(x,y) a bunch of times
}
Agora, a funcionalidade implementada pelo lambda tornou-se necessária em outro lugar, por isso vou elevar o lambda para foo()o escopo global / namespace. Posso deixá-lo como um lambda, tornando-o uma opção de copiar e colar ou alterá-lo para uma função adequada:
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
}
Mudá-lo para uma função adequada é trivial, mas me fez pensar se há algum motivo para não deixá-lo como um lambda? Existe alguma razão para não usar lambdas em todos os lugares, em vez de funções globais "regulares"?