Hãy xem xét ví dụ sau:ẩn được biến biến thông qua biến trong lambda. làm thế nào để bỏ ẩn?
int main()
{
int a = 100;
std::cout<<[=,&a](int a,int b){return a+b;}(99,1);
return 0;
}
Đầu ra là 101
thay vì kỳ vọng của tôi về 100
.
Tôi không thể chỉ định như vậy [&a,=]
vì lỗi này gây ra lỗi.
Làm cách nào để tránh ẩn tên và tham khảo thông số. tôi biết thay đổi tên là tùy chọn nhưng tôi tò mò. cũng tham khảo tiêu chuẩn sẽ rất hữu ích
EDIT: Tôi đang sử dụng gcc 4.7.1
EDIT:
đây là liên kết ideone thấy bản demo. tôi đã sử dụng C++ 4.7.2 complier có
ideone
Bạn không thể đổi tên ** một đối số và biến cục bộ bên ngoài? –
vâng tôi đã đề cập rằng trong câu hỏi của tôi nhưng tôi tò mò là tại sao có thể được thực hiện? –
'[&, =]' chuyển tất cả các biến theo tham chiếu ** và ** tất cả các biến bằng cách sao chép đồng thời?! Điều đó vô nghĩa đối với tôi. – deepmax