Chúng tôi có một chức năng sử dụng nội bộ lambda không bắt giữ cho chính nó, ví dụ:
void foo() {
auto bar = [](int a, int b){ return a + b; }
// code using bar(x,y) a bunch of times
}
Bây giờ chức năng được thực hiện bởi lambda trở nên cần thiết ở nơi khác, vì vậy tôi sẽ nâng lambda ra khỏi foo()
phạm vi toàn cầu / không gian tên. Tôi có thể để nó dưới dạng lambda, biến nó thành tùy chọn sao chép hoặc thay đổi nó thành một chức năng phù hợp:
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
}
Thay đổi nó thành một chức năng phù hợp là chuyện nhỏ, nhưng nó khiến tôi tự hỏi liệu có lý do nào để không để nó như một lambda không? Có lý do nào để không sử dụng lambdas ở mọi nơi thay vì các chức năng toàn cầu "thông thường" không?