#include <iostream>
using namespace std;
#ifndef _MSC_VER
#define __FUNCSIG__ __PRETTY_FUNCTION__
#endif
class Foo
{
public:
Foo() {}
void QQ() { cout << this << endl; }
int a;
};
class Holder
{
public:
Holder()
{
}
//template<class T>
//Holder(T&&)
//{
//cout << __FUNCSIG__ << this << endl;
//}
Holder(Holder&)
{
cout << __FUNCSIG__ << this << endl;
}
Foo &operator *()
{
return *foo;
}
Foo *foo = nullptr;
};
int main()
{
Holder h;
h.foo = new Foo;
[h]()
{
cout << "lambda" << h.foo << endl;
}();
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwojaWZuZGVmIF9NU0NfVkVSCiNkZWZpbmUgX19GVU5DU0lHX18gX19QUkVUVFlfRlVOQ1RJT05fXyAKI2VuZGlmCmNsYXNzIEZvbwp7CnB1YmxpYzoKCUZvbygpIHt9Cgl2b2lkIFFRKCkgeyBjb3V0IDw8IHRoaXMgPDwgZW5kbDsgfQoJaW50IGE7Cn07CmNsYXNzIEhvbGRlcgp7CnB1YmxpYzoKCUhvbGRlcigpCgl7CgoJfQoJLy90ZW1wbGF0ZTxjbGFzcyBUPgoJLy9Ib2xkZXIoVCYmKQoJLy97CgkJLy9jb3V0IDw8IF9fRlVOQ1NJR19fIDw8IHRoaXMgPDwgZW5kbDsKCS8vfQoKCUhvbGRlcihIb2xkZXImKQoJewoJCWNvdXQgPDwgX19GVU5DU0lHX18gPDwgdGhpcyA8PCBlbmRsOwoJfQoJRm9vICZvcGVyYXRvciAqKCkKCXsKCQlyZXR1cm4gKmZvbzsKCX0KCglGb28gKmZvbyA9IG51bGxwdHI7Cn07CgppbnQgbWFpbigpCnsKCUhvbGRlciBoOwoJaC5mb28gPSBuZXcgRm9vOwoJW2hdKCkKCXsKCQljb3V0IDw8ICJsYW1iZGEiIDw8IGguZm9vIDw8IGVuZGw7Cgl9KCk7CglyZXR1cm4gMDsKfQ==