Как это работает? Он печатает 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.