Return a weak_ptr holding a weak reference to this managed object if this object is currently managed by shared_ptr, and return an expired weak_ptr otherwise. If multiple groups of shared_ptrs are managing this object, the returned weak_ptr will hold a weak reference to the group that first managed this object.