Implementing atomic<T>::store

Do what you want. It doesn't matter.

When ISO state that you "shall not do something", doing it is undefined behaviour. If a user does that, they have violated the contract with the implementation, and the implementation is within its rights to do as it pleases.

What you decide to do is entirely up to you. I would opt for whatever makes your implementation "better" (in your eyes, be that faster, more readable, subject to the principle of least astonishment, and so forth).

Myself, I'd go for readability (since I would have to maintain the thing) with speed taking a close second.