này không biên dịch kể từ khi lambda lợi nhuận biểu hiện bằng giá trị:Tôi có thể buộc một lambda C++ 11 trở lại bằng cách tham chiếu không?
#include <iostream>
class Item
{
public:
int& f(){return data_;}
private:
int data_ = 0;
};
int main()
{
Item item;
auto lambda = [](Item& item){return item.f();};
lambda(item) = 42; // lambda(item) is a rvalue => compile time error
std::cout << item.f() << std::endl;
return 0;
}
Có một khoảng cách này? Tôi có thể buộc một lambda trả lại bằng cách tham chiếu?
Trường hợp bạn đã tìm hiểu về lambdas chỉ dạy phiên bản rút gọn? Cú pháp đầy đủ bao gồm không chỉ một cách để khai báo rõ ràng kiểu trả về, mà là một nơi cho 'mutable', các đặc tả ngoại lệ, các thuộc tính và các capture. Tôi có thể thấy bỏ qua một số trong những lần đầu tiên dạy lambdas, nhưng không phải là kiểu trả về. – bames53
Đó là trên wikipedia http://en.wikipedia.org/wiki/C%2B%2B11#Lambda_functions_and_expressions. Tôi ngừng đọc trên "Loại trả về là ngầm". Hóa ra là bài viết chính có chứa cú pháp đầy đủ. –