Date
2010-10-21.18:28:33
Message id
4029

Content

Proposed resolution:

within the synopsis in [atomics.types.integral] edit as follows.


....
typedef struct atomic_bool {
....
  constexpr explicit atomic_bool(bool);
....
typedef struct atomic_itype {
....
  constexpr explicit atomic_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 explicit value 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 explicit atomic_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 constexpr explicit value 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 explicit atomic(T);
....
template <> struct atomic<integral> : atomic_itype {
....
  constexpr explicit atomic(integral);
....
template <> struct atomic<T*> : atomic_address {
....
  constexpr explicit atomic(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 constexpr explicit value constructor.