#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;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKY2xhc3MgWEQKewpwdWJsaWM6CiAgWEQoKTpwdHIobmV3IGludCkgeyBjb3V0PDwgIlhEOiAiIDw8IHRoaXMgPDxlbmRsO30JCiAgLy9YRChjb25zdCBYRCYpIHsgY291dDw8ICJjb3B5IFhEIiA8PGVuZGw7fQkKICAvL1hEKFhEJiYpIHsgY291dDw8ICJtb3ZlIFhEIiA8PGVuZGw7fQkKICB+WEQoKSB7IGNvdXQ8PCAiflhEOiAiIDw8IHRoaXMgPDxlbmRsOyBkZWxldGUgcHRyO30KICBpbnQqIHB0cjsKfTsKCgpjbGFzcyBCYXIKewpwdWJsaWM6CglCYXIoKXtjb3V0PDwiQmFyIjw8ZW5kbDt9Cgl+QmFyKCl7Y291dDw8In5CYXIiPDxlbmRsO30KfTsKY2xhc3MgRm9vCnsKcHVibGljOgogIEZvbyhYRCB4ZCA9IFhEKCkpeyBjb3V0IDw8IkZvbyI8PGVuZGw7IH0KICAvL0ZvbygmJiB4ZCA9IFhEKCkpeyBjb3V0IDw8IkZvbyI8PGVuZGw7IH0KICB+Rm9vKCl7Y291dDw8In5Gb28iPDxlbmRsO30KICBCYXIgYjsKfTsKaW50IG1haW4oKSB7Cgl7CgkgIEZvbyBmOwoJICBjb3V0PDwiPT09PT09PT09PT09Ijw8ZW5kbDsKCX0KCXJldHVybiAwOwp9