shared_ptr: swap()

By convention I pass all shared_ptr by value, like pointer.
Avoiding useless update of reference count, swap() allow to
store value.