Proposed resolution:
within the synopsis in [atomics.types.integral] edit as follows.
.... typedef struct atomic_bool { .... constexpr
explicitatomic_bool(bool); .... typedef struct atomic_itype { .... constexprexplicitatomic_itype(integral); ....
edit [atomics.types.integral] paragraph 2 as follows.
The atomic integral types shall have standard layout. They shall each have a trivial default constructor, a constexpr
explicitvalue constructor, a deleted copy constructor, a deleted copy assignment operator, and a trivial destructor. They shall each support aggregate initialization syntax.
within the synopsis of [atomics.types.address] edit as follows.
.... typedef struct atomic_address { .... constexpr
explicitatomic_address(void*); ....
edit [atomics.types.address] paragraph 1 as follows.
The type
atomic_address
shall have standard layout. It shall have a trivial default constructor, a constexprexplicitvalue constructor, a deleted copy constructor, a deleted copy assignment operator, and a trivial destructor. It shall support aggregate initialization syntax.
within the synopsis of [atomics.types.generic] edit as follows.
.... template <class T> struct atomic { .... constexpr
explicitatomic(T); .... template <> struct atomic<integral> : atomic_itype { .... constexprexplicitatomic(integral); .... template <> struct atomic<T*> : atomic_address { .... constexprexplicitatomic(T*); ....
edit [atomics.types.generic] paragraph 2 as follows.
Specializations of the
atomic
template shall have a deleted copy constructor, a deleted copy assignment operator, and a constexprexplicitvalue constructor.