Each of the using-declarations for
intN_t, uintN_t, intptr_t, and uintptr_t
listed above is defined if and only if the implementation defines
the corresponding typedef-name in [atomics.syn].
Neither the _Atomic macro,
nor any of the non-macro global namespace declarations,
are provided by any C++ standard library header
other than <stdatomic.h>.
Recommended practice: Implementations should ensure
that C and C++ representations of atomic objects are compatible,
so that the same object can be accessed as both an _Atomic(T)
from C code and an atomic<T> from C++ code.
The representations should be the same, and
the mechanisms used to ensure atomicity and memory ordering
should be compatible.