#include <memory>
#include <iostream>
class Base {
public:
Base() { std::cout << "Constructing Base" << std::endl; }
virtual ~Base() { std::cout << "Destructing Base" << std::endl; }
};
class Derived : public Base {
public:
Derived() { std::cout << "Constructing Derived" << std::endl; }
~Derived() { std::cout << "Destructing Derived" << std::endl; }
};
int main() {
std::unique_ptr<Base> ptr{new Derived()};
}
I2luY2x1ZGUgPG1lbW9yeT4KI2luY2x1ZGUgPGlvc3RyZWFtPgoKY2xhc3MgQmFzZSB7CnB1YmxpYzoKICAgIEJhc2UoKSB7IHN0ZDo6Y291dCA8PCAiQ29uc3RydWN0aW5nIEJhc2UiIDw8IHN0ZDo6ZW5kbDsgfQogICAgdmlydHVhbCB+QmFzZSgpIHsgc3RkOjpjb3V0IDw8ICJEZXN0cnVjdGluZyBCYXNlIiA8PCBzdGQ6OmVuZGw7IH0KfTsKCmNsYXNzIERlcml2ZWQgOiBwdWJsaWMgQmFzZSB7CnB1YmxpYzoKICAgIERlcml2ZWQoKSB7IHN0ZDo6Y291dCA8PCAiQ29uc3RydWN0aW5nIERlcml2ZWQiIDw8IHN0ZDo6ZW5kbDsgfQogICAgfkRlcml2ZWQoKSB7IHN0ZDo6Y291dCA8PCAiRGVzdHJ1Y3RpbmcgRGVyaXZlZCIgPDwgc3RkOjplbmRsOyB9Cn07CgppbnQgbWFpbigpIHsKICAgIHN0ZDo6dW5pcXVlX3B0cjxCYXNlPiBwdHJ7bmV3IERlcml2ZWQoKX07Cn0=