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