Teníamos una función que usaba una lambda interna que no capturaba, por ejemplo:
void foo() {
auto bar = [](int a, int b){ return a + b; }
// code using bar(x,y) a bunch of times
}
Ahora la funcionalidad implementada por el lambda se hizo necesaria en otros lugares, por lo que voy a sacar el lambda del foo()
alcance global / espacio de nombres. Puedo dejarlo como lambda, convirtiéndolo en una opción de copiar y pegar, o cambiarlo a una función adecuada:
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 a una función adecuada es trivial, pero me hizo preguntarme si hay alguna razón para no dejarlo como una lambda. ¿Hay alguna razón para no usar lambdas en todas partes en lugar de funciones globales "regulares"?