Section: 32.5.8.2 [atomics.types.operations] Status: NAD Editorial Submitter: Anthony Williams Opened: 2008-07-10 Last modified: 2016-01-28
Priority: Not Prioritized
View other active issues in [atomics.types.operations].
View all other issues in [atomics.types.operations].
View all issues with NAD Editorial status.
Discussion:
There's an error in 32.5.8.2 [atomics.types.operations]/p9:
C atomic_load(const volatile A * object); C atomic_load_explicit(const volatile A * object, memory_order); C A ::load(memory_order order = memory_order_seq_cst) const volatile;Requires: The
order
argument shall not bememory_order_acquire
normemory_order_acq_rel
.
I believe that this should state
shall not be
memory_order_release
.
There's also an error in 32.5.8.2 [atomics.types.operations]/p17:
... When only one
memory_order
argument is supplied, the value of success isorder
, and the value of failure isorder
except that a value ofmemory_order_acq_rel
shall be replaced by the valuememory_order_require
...
I believe this should state
shall be replaced by the value
memory_order_acquire
...
Proposed resolution:
Change 32.5.8.2 [atomics.types.operations]/p9:
C atomic_load(const volatile A * object); C atomic_load_explicit(const volatile A * object, memory_order); C A ::load(memory_order order = memory_order_seq_cst) const volatile;Requires: The
order
argument shall not bememory_order_acquire
memory_order_release
normemory_order_acq_rel
.
Change 32.5.8.2 [atomics.types.operations]/p17:
... When only one
memory_order
argument is supplied, the value of success isorder
, and the value of failure isorder
except that a value ofmemory_order_acq_rel
shall be replaced by the valuememory_order_require
memory_order_acquire
...
Rationale:
Already fixed by the time the LWG processed it.