У нас була функція, яка використовувала внутрішню для себе лямбда, яка не захоплює, наприклад:
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
}
Зміна його на належну функцію є тривіальною, але це змусило мене задуматися, чи є якась причина, щоб не залишити її як лямбда? Чи є якась причина не просто використовувати лямбди всюди замість «регулярних» глобальних функцій?