Annex C (informative) Compatibility [diff]

C.5 C++ and ISO C++ 2017 [diff.cpp17]

C.5.2 [basic]: basics [diff.cpp17.basic]

Affected subclauses: [], [module.unit], and [module.import]
Change: New identifiers with special meaning.

Rationale: Required for new features.

Effect on original feature: Top-level declarations beginning with module or import may be either ill-formed or interpreted differently in this International Standard.
class module;
module *m1;         // ill-formed; previously well-formed
::module *m2;       // OK

class import {};
import j1;          // was variable declaration; now import-declaration
::import j2;        // variable declaration
— end example
Affected subclause: [intro.races]
Change: Except for the initial release operation, a release sequence consists solely of atomic read-modify-write operations.

Rationale: Removal of rarely used and confusing feature.

Effect on original feature: If a memory_­order_­release atomic store is followed by a memory_­order_­relaxed store to the same variable by the same thread, then reading the latter value with a memory_­order_­acquire load no longer provides any “happens before” guarantees, even in the absence of intervening stores by another thread.