Why can a `std::unique_ptr<Derived>` be moved into a `std::unique_ptr<Base>` (with a virtual destructor) but never copied into one?
std::unique_ptr<Derived> d = std::make_unique<Derived>();
std::unique_ptr<Base> b = std::move(d); // ok
// std::unique_ptr<Base> c = d; // error