Avevamo una funzione che utilizzava una lambda non catturante interna a se stessa, ad esempio:
void foo() {
auto bar = [](int a, int b){ return a + b; }
// code using bar(x,y) a bunch of times
}
Ora la funzionalità implementata dalla lambda è diventata necessaria altrove, quindi ho intenzione di sollevare la lambda foo()
dall'ambito globale / namespace. Posso lasciarlo come lambda, rendendolo un'opzione copia-incolla o cambiarlo in una funzione corretta:
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
}
Cambiarlo in una funzione adeguata è banale, ma mi chiedo se c'è qualche motivo per non lasciarlo come lambda? C'è qualche motivo per non usare lambda ovunque invece di funzioni globali "regolari"?