This is where you can implicitly convert pointers:
struct base {};
struct derived : base {};
std::auto_ptr<derived> d(new derived);
std::auto_ptr<base> b(d);
, , , - const. , auto_ptr . , b, d . auto_ptr , .
++ 0x auto_ptr unique_ptr. , - -. , , "" :
std::unique_ptr<derived> d(new derived);
std::unique_ptr<base> b(d);
std::unique_ptr<base> b(std::move(d));
unique_ptr , , .