Wir hatten eine Funktion, die ein nicht erfassendes Lambda in sich selbst verwendete, z.
void foo() {
auto bar = [](int a, int b){ return a + b; }
// code using bar(x,y) a bunch of times
}
Jetzt wurde die vom Lambda implementierte Funktionalität an anderer Stelle benötigt, sodass ich das Lambda aus foo()
dem Bereich global / Namespace herausheben werde. Ich kann es entweder als Lambda belassen, es zu einer Option zum Kopieren und Einfügen machen, oder es in eine richtige Funktion ändern:
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
}
Ändern es auf eine einwandfreie Funktion ist trivial, aber es machte mich wundern , wenn es aus irgendeinem Grund ist nicht , es zu verlassen als Lambda? Gibt es einen Grund, nicht überall nur Lambdas anstelle "regulärer" globaler Funktionen zu verwenden?