boost::interprocess::swap
template<typename T, typename VP> void swap(intrusive_ptr< T, VP > & lhs, intrusive_ptr< T, VP > & rhs);
Exchanges the contents of the two intrusive_ptrs. Does not throw