shared_ptr & operator=( shared_ptr const & r ) // never throws { this_type(r).swap(*this); return *this; }