Я читаю раздел лямбда С++ в главе 3 этой книги, и следующий код меня смущает:
int x = 0;
int y = 42;
auto qqq = [x, &y] {
std::cout << "x: " << x << std::endl;
std::cout << "y: " << y << std::endl;
++y;
};
x = y = 77;
qqq();
qqq();
std::cout << "final y: " << y << std::endl;
Этот код печатает:
x: 0
y: 77
x: 0
y: 78
final y: 79
Почему qqq() не регистрирует, что x изменился на 77? Было указано, что передача по значению означает, что мы можем читать, но не изменять данные, доступные для чтения, где была определена лямбда. Означает ли это, что мы не можем видеть изменения после определения?