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

56 lines
1.6 KiB
Markdown
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

[diff.cpp17.basic]
# Annex C (informative) Compatibility [[diff]](./#diff)
## C.3 C++ and ISO C++ 2017 [[diff.cpp17]](diff.cpp17#basic)
### C.3.3 [[basic]](basic "6Basics"): basics [diff.cpp17.basic]
[1](#1)
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/compatibility.tex#L975)
**Affected subclause:** [[basic.life]](basic.life)
**Change:** A pseudo-destructor call ends the lifetime of
the object to which it is applied[.](#1.sentence-1)
**Rationale:** Increase consistency of the language model[.](#1.sentence-2)
**Effect on original feature:** Valid ISO C++ 2017 code may be ill-formed or
have undefined behavior in this revision of C++[.](#1.sentence-3)
[*Example [1](#example-1)*: int f() {int a = 123; using T = int;
a.~T(); return a; // undefined behavior; previously returned 123} — *end example*]
[2](#2)
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/compatibility.tex#L995)
**Affected subclause:** [[intro.races]](intro.races)
**Change:** Except for the initial release operation,
a release sequence consists solely of atomic read-modify-write operations[.](#2.sentence-1)
**Rationale:** Removal of rarely used and confusing feature[.](#2.sentence-2)
**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[.](#2.sentence-3)