The type aliases atomic_intN_t, atomic_uintN_t,
atomic_intptr_t, and atomic_uintptr_t
are defined if and only if
intN_t, uintN_t,
intptr_t, and uintptr_t
are defined, respectively.
The type aliases
atomic_signed_lock_free and atomic_unsigned_lock_free
name specializations of atomic
whose template arguments are integral types, respectively signed and unsigned,
and whose is_always_lock_free property is true.
These aliases are optional in freestanding implementations ([compliance]).
— end note]
Implementations should choose for these aliases
the integral specializations of atomic
for which the atomic waiting and notifying operations ([atomics.wait])
are most efficient.