Ví dụ ngắn:
#include <iostream>
int main()
{
int n;
[&](){n = 10;}(); // OK
[=]() mutable {n = 20;}(); // OK
// [=](){n = 10;}(); // Error: a by-value capture cannot be modified in a non-mutable lambda
std::cout << n << "\n"; // "10"
}
Câu hỏi: Tại sao chúng ta cần mutable
từ khóa? Nó khá khác với tham số truyền thống truyền đến các hàm được đặt tên. Lý do đằng sau là gì?
Tôi có ấn tượng rằng toàn bộ quan điểm của giá trị nắm bắt là cho phép người dùng thay đổi tạm thời - nếu không thì tôi hầu như luôn luôn tốt hơn khi sử dụng tham chiếu chụp, phải không?
Có giác ngộ nào không?
(Nhân tiện, tôi đang sử dụng MSVC2010. AFAIK đây phải là tiêu chuẩn)
const
được mặc định.
const
được mặc định!