#include <iostream>
#include <utility>
using namespace std;
template <typename F>
void bar(const F& f)
{
auto d = f.x;
f();
}
void do_something (int x) { }
int main()
{
struct Tmp {
int &x;
Tmp (int& x) : x(x) {}
void operator() () const {
do_something(x);
}
};
int x;
Tmp t(x);
bar(t);
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dXRpbGl0eT4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCnRlbXBsYXRlIDx0eXBlbmFtZSBGPgp2b2lkIGJhcihjb25zdCBGJiBmKQp7CiAgICBhdXRvIGQgPSBmLng7CiAgICBmKCk7Cn0KCnZvaWQgZG9fc29tZXRoaW5nIChpbnQgeCkgeyB9CgppbnQgbWFpbigpCnsKCXN0cnVjdCBUbXAgewoJCWludCAmeDsgCgkJVG1wIChpbnQmIHgpIDogeCh4KSB7fQoJICAgIHZvaWQgb3BlcmF0b3IoKSAoKSBjb25zdCB7CiAgICAgICAgICAgZG9fc29tZXRoaW5nKHgpOwoJICAgIH0KCX07CiAgICBpbnQgeDsKICAgIFRtcCB0KHgpOyAKICAgIGJhcih0KTsKfQo=