#include <iostream>
using namespace std;
class B {
public:
B() {
cout << "B ctor" << endl;
}
~B() {
cout << "B dtor" << endl;
}
};
class A {
public:
A(B b = B()) {
cout << "A ctor" << endl;
}
~A() {
cout << "A dtor" << endl;
}
};
void doTemp() {
A();
}
void doStack() {
A a;
}
int main() {
cout << "temporary:" << endl;
doTemp();
cout << "stack:" << endl;
doStack();
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKY2xhc3MgQiB7CnB1YmxpYzoKICBCKCkgewogICAgY291dCA8PCAiQiBjdG9yIiA8PCBlbmRsOwogIH0KICB+QigpIHsKICAgIGNvdXQgPDwgIkIgZHRvciIgPDwgZW5kbDsKICB9Cn07CgpjbGFzcyBBIHsKcHVibGljOgogIEEoQiBiID0gQigpKSB7CiAgICBjb3V0IDw8ICJBIGN0b3IiIDw8IGVuZGw7CiAgfQogIH5BKCkgewogICAgY291dCA8PCAiQSBkdG9yIiA8PCBlbmRsOwogIH0KfTsKCnZvaWQgZG9UZW1wKCkgewogIEEoKTsKfQoKdm9pZCBkb1N0YWNrKCkgewogIEEgYTsKfQoKaW50IG1haW4oKSB7CiAgY291dCA8PCAidGVtcG9yYXJ5OiIgPDwgZW5kbDsKICBkb1RlbXAoKTsKICBjb3V0IDw8ICJzdGFjazoiIDw8IGVuZGw7CiAgZG9TdGFjaygpOwoKICByZXR1cm4gMDsKfQ==