#include <iostream>
#include <memory>

struct A
{
    ~A() { std::cout << "~A\n"; }
};

struct B : A
{
    ~B() { std::cout << "~B\n"; }
};

int
main()
{
    std::shared_ptr<A> a = std::shared_ptr<B>(new B);
}