Kendi içinde yakalamayan bir lambda kullanan bir fonksiyonumuz vardı, örneğin:
void foo() {
auto bar = [](int a, int b){ return a + b; }
// code using bar(x,y) a bunch of times
}
Şimdi lambda tarafından uygulanan işlevsellik başka bir yerde gerekli hale geldi, bu yüzden lambda'yı foo()küresel / ad alanı kapsamından kaldıracağım . Bir lambda olarak bırakabilirim, kopyala-yapıştır seçeneği yapabilir veya uygun bir işleve değiştirebilirim:
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
}
Uygun bir işlevine değiştirme önemsiz, ama bana bir sebep mi var olup olmadığını merak yapılmış değil bir lambda olarak bırakmak için? "Normal" küresel işlevler yerine her yerde lambdaları kullanmamak için bir neden var mı?