#include <iostream>
using namespace std;

class XD
{
public:
  XD():ptr(new int) { cout<< "XD: " << this <<endl;}	
  //XD(const XD&) { cout<< "copy XD" <<endl;}	
  //XD(XD&&) { cout<< "move XD" <<endl;}	
  ~XD() { cout<< "~XD: " << this <<endl; delete ptr;}
  int* ptr;
};


class Bar
{
public:
	Bar(){cout<<"Bar"<<endl;}
	~Bar(){cout<<"~Bar"<<endl;}
};
class Foo
{
public:
  Foo(XD xd = XD()){ cout <<"Foo"<<endl; }
  //Foo(&& xd = XD()){ cout <<"Foo"<<endl; }
  ~Foo(){cout<<"~Foo"<<endl;}
  Bar b;
};
int main() {
	{
	  Foo f;
	  cout<<"============"<<endl;
	}
	return 0;
}