https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114865
--- Comment #22 from Jonathan Wakely <redi at gcc dot gnu.org> --- I'm not sure how to fix that problem without pessimizing every std::atomic<T>::compare_exchange_strong to use the looping implementation that std::atomic_ref<T>::compare_exchange_strong uses, or to find some C++11-friendly way to zero padding in the constexpr std::atomic<T>::atomic(T) constructor. I think the latter would require new compiler magic (maybe an attribute on the mem-initializer that says to clear padding, or something like that).