Kami memiliki fungsi yang menggunakan lambda internal yang tidak menangkap sendiri, misalnya:
void foo() {
auto bar = [](int a, int b){ return a + b; }
// code using bar(x,y) a bunch of times
}
Sekarang fungsi yang diimplementasikan oleh lambda menjadi dibutuhkan di tempat lain, jadi saya akan mengangkat lambda keluar dari foo()
ruang lingkup global / namespace. Saya bisa membiarkannya sebagai lambda, menjadikannya opsi salin-tempel, atau mengubahnya ke fungsi yang benar:
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
}
Mengubahnya ke fungsi yang tepat itu sepele, tapi itu membuat saya bertanya-tanya apakah ada alasan untuk tidak meninggalkannya sebagai lambda? Apakah ada alasan untuk tidak menggunakan lambda di mana saja alih-alih fungsi global "biasa"?