Files
2025-10-25 03:02:53 +03:00

1.6 KiB
Raw Permalink Blame History

[diff.cpp17.basic]

Annex C (informative) Compatibility [diff]

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

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

1

#

Affected subclause: [basic.life]

Change: A pseudo-destructor call ends the lifetime of the object to which it is applied.

Rationale: Increase consistency of the language model.

Effect on original feature: Valid ISO C++ 2017 code may be ill-formed or have undefined behavior in this revision of C++.

[Example 1: int f() {int a = 123; using T = int; a.~T(); return a; // undefined behavior; previously returned 123} — end example]

2

#

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.