У нас была функция, которая использовала не захватывающую внутреннюю лямбду, например:
void foo() {
auto bar = [](int a, int b){ return a + b; }
// code using bar(x,y) a bunch of times
}
Теперь функциональность, реализованная лямбда-выражением, стала необходимой в другом месте, поэтому я собираюсь вывести лямбда-вывод из foo()
области глобальных пространств имен. Я могу либо оставить его как лямбду, сделав опцию копирования-вставки, либо изменить его на правильную функцию:
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
}
Изменение его на правильную функцию тривиально, но это заставило меня задуматься, есть ли какая-то причина не оставлять это как лямбду? Есть ли причина не использовать везде лямбды вместо «обычных» глобальных функций?