Mieliśmy funkcję, która wykorzystywała wewnętrzną lambda, która nie przechwytuje, np .:
void foo() {
auto bar = [](int a, int b){ return a + b; }
// code using bar(x,y) a bunch of times
}
Teraz funkcjonalność zaimplementowana przez lambda stała się potrzebna gdzie indziej, więc zamierzam foo()
przenieść lambda z zakresu globalnego / przestrzeni nazw. Mogę zostawić go jako lambda, ustawiając opcję kopiuj-wklej lub zmienić na odpowiednią funkcję:
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
}
Zmiana tej funkcji na właściwą jest banalna, ale zastanawiałem się, czy istnieje jakiś powód, aby nie zostawiać jej jako lambda? Czy jest jakiś powód, aby nie używać wszędzie lambd zamiast „zwykłych” funkcji globalnych?