Effects: Atomically replaces the value referenced by *ptr with
the result of the computation applied to the value referenced by *ptr
and the given operand.
Memory is affected according to the value of order.
These operations are atomic read-modify-write operations ([intro.races]).
For fetch_max and fetch_min, the maximum and minimum
computation is performed as if by max and min
algorithms ([alg.min.max]), respectively, with the object value and the first
parameter as the arguments.
If the pointers point to different complete objects (or subobjects thereof),
the < operator does not establish a strict weak ordering
(Table 29, [expr.rel]).