#include <functional>
#include <iostream>
using namespace std;
const function<void()>* pointer;
void a(const function<void()> & f)
{
pointer = &f;
}
void b()
{
(*pointer)();
}
int main()
{
int value = 1;
std::cout << value << std::endl;
// 1: this works
function<void()> f = [&] () { std::cout << value << std::endl; };
a(f);
// 2: this doesn't
a([&] () { std::cout << value << std::endl; });
//c();
char data[1024];
for (int i = 0; i < 1024; i++)
data[i] = i % 4;
b();
return 0;
}
I2luY2x1ZGUgPGZ1bmN0aW9uYWw+CiNpbmNsdWRlIDxpb3N0cmVhbT4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmNvbnN0IGZ1bmN0aW9uPHZvaWQoKT4qIHBvaW50ZXI7Cgp2b2lkIGEoY29uc3QgZnVuY3Rpb248dm9pZCgpPiAmIGYpCnsKICAgIHBvaW50ZXIgPSAmZjsKfQoKdm9pZCBiKCkKewogICAgKCpwb2ludGVyKSgpOwp9CgppbnQgbWFpbigpCnsKICAgIGludCB2YWx1ZSA9IDE7CiAgICBzdGQ6OmNvdXQgPDwgdmFsdWUgPDwgc3RkOjplbmRsOwoKICAgIC8vIDE6IHRoaXMgd29ya3MgICAgCiAgICBmdW5jdGlvbjx2b2lkKCk+IGYgPSBbJl0gKCkgeyBzdGQ6OmNvdXQgPDwgdmFsdWUgPDwgc3RkOjplbmRsOyB9OwogICAgYShmKTsKCiAgICAvLyAyOiB0aGlzIGRvZXNuJ3QKICAgIGEoWyZdICgpIHsgc3RkOjpjb3V0IDw8IHZhbHVlIDw8IHN0ZDo6ZW5kbDsgfSk7CiAgICAvL2MoKTsKICAgIGNoYXIgZGF0YVsxMDI0XTsKICAgIGZvciAoaW50IGkgPSAwOyBpIDwgMTAyNDsgaSsrKQogICAgICAgIGRhdGFbaV0gPSBpICUgNDsgCgogICAgYigpOwoKICAgIHJldHVybiAwOwp9