Không Boost Lambda/Phoenix hỗ trợ ra khỏi hộp một cái gì đó như lambda mà trả về lambda khác?Tăng Lambda/Phoenix - làm thế nào để làm lambda trả về lambda khác?
Ví dụ, có thể được sử dụng để làm một số loại tách lạng bộ:
std::cout << [](int x){return [=](int y){return x+y;};}(1)(2);
Làm thế nào để đạt được mục đích tương tự với Boost Lambda/Phoenix (+ như một phần thưởng - chúng tôi sẽ nhận được hành vi đa hình)?
Vấn đề tôi đã có trong cố gắng để trả lời này là 'arg1' được tiêu thụ bởi ngoài cùng' bind' - Tôi muốn một 'arg1' tôi có thể đi vào bên trong' bind', nhưng bên ngoài 'bind' ăn nó thay thế. Nếu tôi có một cách để "thoát" trình giữ chỗ đối số ... – Yakk
@Yakk, bạn có thể thử sử dụng boost :: bind - AFAIK nó khác với liên kết lambda/phoenix (http://www.boost.org/doc/ libs/1_53_0/doc/html/lambda/s08.html # idp111396608). Ngoài ra, mã đăng của bạn cố gắng như câu trả lời - tiền thưởng kết thúc vào ngày mai ... – qble