A non-member function template whose name matches the pattern
atomic_f or the pattern atomic_f_explicit
invokes the member function f, with the value of the
first parameter as the object expression and the values of the remaining parameters
(if any) as the arguments of the member function call, in order.
for a parameter of type atomic<T>::value_type* is dereferenced when
passed to the member function call.
If no such member function exists, the program is ill-formed.