According to the point 1.10.19 in http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2012/n3337.pdf, the compiler cannot reorder the atomic operations on same object even in