เรามีฟังก์ชั่นที่ใช้แลมบ์ดาภายในที่จับภาพตัวเองไม่ได้เช่น:
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
}
การเปลี่ยนไปใช้ฟังก์ชั่นที่เหมาะสมนั้นเป็นเรื่องเล็กน้อย แต่มันทำให้ฉันสงสัยว่ามีเหตุผลบางอย่างที่จะไม่ปล่อยให้มันเป็นแลมบ์ดาบ้างไหม? มีเหตุผลใดที่ไม่เพียงแค่ใช้ lambdas ทุกที่แทนที่จะใช้ฟังก์ชั่นสากล "ปกติ"?