SC22 N5721 contains the six collated NB comments resulting from the DTS ballot on C++ Extensions for Minimal Transactional Memory. This paper presents the proposed responses to the NB comments, presented as changes against WG21 N4906 "Working Draft, Extensions to C++ for Transactional Memory Version 2", the base document for the DTS ballot.
Disposition: Accept.
Change in subclause 8.8 [stmt.tx] paragraph 3:
A goto or switch statement shall not be used to transfer control into an atomic block.Acase
ordefault
label appearing within an atomic block shall be associated with aswitch
statement (8.5.3 [stmt.switch]) within the same atomic block. A label (8.2 [stmt.label]) declared in an atomic block shall only be referred to by a statement in the same atomic block.
Disposition: Accept with modifications.
Change in 8.8 [stmt.tx] paragraph 2:
The start of the atomic block is immediatelybeforeafter the opening{
of the compound-statement.TheEvaluation of the end of the atomic blockis immediately after the closingoccurs when the invocation of the destructor for a hypothetical automatic variable of class type declared at the start of the atomic block would happen (8.7.1 [stmt.jump.general]).}
of the compound-statement
Disposition: Accept.
Change in 8.8 [stmt.tx] paragraph 6:
If the execution of an atomic block evaluates any of the following outside of a manifestly constant-evaluated context (7.7 [expr.const]), the behavior is implementation-defined: ...
Disposition: Accept.
Change in 8.8 [stmt.tx] paragraph 6:
- ...
- an invocation of a function
other than one of the standard library functions specified in 16.4.6.17, unless the function is inline with a reachable definition;, unless
- the function is inline with a reachable definition or
- the function is a library function that may be used in an atomic block (16.4.6.17);
- ...
Disposition: Accept.
Add a new bullet in 16.4.6.17 [atomic.use]:
- ...
locale
construction (28.3.1.3)locale::global
(28.3.1.6 [locale.statics])- ...
Disposition: Accept.
Change in Clause 1 [scope] paragraph 1:
This document describes requirements for implementations of an interface that computer programs written in the C++ programming languagemaycan use toinvoke algorithms with concurrent execution. The algorithms described by this document are realizable across a broad class of computer architectures.express groups of operations (known as transactions) that appear to execute atomically in relation to other transactions (concurrent or otherwise).
Change in 8.8 [stmt.tx] paragraph 6: