Как это работает? Он печатает 6
:
#include <iostream>
#include <functional>
using namespace std;
void scopeIt(std::function<int()> &fun) {
int val = 6;
fun = [=](){return val;}; //<-- this
}
int main() {
std::function<int()> fun;
scopeIt(fun);
cout << fun();
return 0;
}
Где хранится значение 6
, сохраненное после того, как scopeIt
вызывается? Если я заменяю [=]
на [&]
, он печатает 0
вместо 6
.