Я читаю через C++ лямбда раздел в главе 3 this book и следующий код путает меня:C++ лямбда захват значения
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? Было указано, что передача по значению означает, что мы можем читать, но не изменять данные, доступные для чтения, где была определена лямбда. Означает ли это, что мы не можем видеть изменения после определения?
Вы правы, эта книга не дает очень хорошего объяснения. Ниже приведены ответы на эту работу. – jdigital