constexpr shared_ptr(); (1) template< class Y >
explicit shared_ptr( Y* ptr ); (2) template< class Y, class Deleter >
shared_ptr( Y* ptr, Deleter d ); (3) template< class Y, class Deleter, class Alloc >
shared_ptr( Y* ptr, Deleter d, Alloc alloc ); (4) constexpr shared_ptr( std::nullptr_t ); (5) template< class Deleter >
shared_ptr( std::nullptr_t, Deleter d ); (6) template< class Deleter, class Alloc >
shared_ptr( std::nul