#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;
}