Tôi tự hỏi liệu có thể viết một hàm trả về một hàm lambda trong C ++ 11 không. Tất nhiên một vấn đề là làm thế nào để khai báo hàm như vậy. Mỗi lambda có một kiểu, nhưng kiểu đó không thể diễn đạt được trong C ++. Tôi không nghĩ điều này sẽ hiệu quả:
auto retFun() -> decltype ([](int x) -> int)
{
return [](int x) { return x; }
}
Cũng không phải cái này:
int(int) retFun();
Tôi không biết về bất kỳ chuyển đổi tự động nào từ lambdas thành, chẳng hạn, con trỏ đến các hàm hoặc một số chuyển đổi tương tự. Giải pháp duy nhất có phải là tạo thủ công một đối tượng hàm và trả lại nó không?