void reset(); (1) (since C++11) template< class Y >
void reset( Y* ptr ); (2) (since C++11) template< class Y, class Deleter >
void reset( Y* ptr, Deleter d ); (3) (since C++11) template< class Y, class Deleter, class Alloc >
void reset( Y* ptr, Deleter d, Alloc alloc ); (4) (since C++11)
Replaces the managed object with an object pointed to by ptr. Optional deleter d can be supplied, which is later used to destroy the new object when no shared_ptr