Concurrent access to a shared_ptr object from multiple threads does not
introduce a data race if the access is done exclusively via the functions in
this subclause and the instance is passed as their first argument.
Effects: If *p is equivalent to *v, assigns w to
*p and has synchronization semantics corresponding to the value of
success, otherwise assigns *p to *v and has
synchronization semantics corresponding to the value of failure.