Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

P2988 r8 #19

Merged
merged 106 commits into from
Nov 4, 2024
Merged

P2988 r8 #19

merged 106 commits into from
Nov 4, 2024

Conversation

steve-downey
Copy link
Owner

No description provided.

steve-downey and others added 30 commits August 4, 2024 11:25
Header is in sync with synopsis.
Make class declaration the synopsis version.
Move the assignment operators out of class synopsis declaration.
Define swap out of body
Definitions of begin and end moved out of line.
Move definitions out of the class declaration.
and_then etc out of line
Move reset out of the body.
Move the free functions out of the namespace. Make sure no declarations are
unintended from a slightly different definition.
optional_map_impl and monostate are dead.
Standardese lives in std and avoids naming the namespace, except for move and
forward.
No extra definitions snuck in, all back now inside the namespace so are not
noise.
Make change tracking back to std a little easier.
Apply all the changes to optional to the wording section of P2988.
Replace by expos or implementation defined.
The type of the u parameter must be convertible to a T, and T must be copy
constructible.
A few additional std:: names. Also remove the anon namespace. Doesn't protect
much as the std:: names are still available if someone uses namespace optional26.
Quuxplusone and others added 20 commits September 16, 2024 12:56
Add two new tests: one for `optional<optional<int>&>`, and one
testing that we can construct and assign to `optional<T&>` from
`reference_wrapper<T>` (which should work: since `reference_wrapper<T>`
is implicitly convertible to `T&`, it also should be implicitly
convertible to `optional<T&>`).
These tests are both red before this patch and green afterward.
The new tests are red before the patch and green afterward.
The return type of `emplace` had been wrong; `emplace` returns a
reference to the emplaced value (in this case, the T& reference
that was bound), not `*this`.

The new tests are red before the patch and green afterward.
All tests pass under ASAN. Maintained constructor triviality, prevent
construction of dangling pointers/references, constrain emplace, copy and move
are identical; no additional overloads for move construction or assignment.
Re clang format, defs out of line where possible, unused definitions removed.
Use exposid for exposition only `val` in optional.
exposid for val, remove postconditions that are redundant with effects, state
constraints as false rather than negating the code with !, fix some linebreaks.
steve-downey and others added 4 commits October 5, 2024 11:33
Typo in constructor fail test cpp file name
An initializer list of references should not construct an optional. Not that a
list of references makes sense, either.
Add notes on wording principles and update wording after review.
Fix missing tex escapes in code blocks
Removed a stray detail:: that refereces a polyfill std:: trait.
@steve-downey steve-downey merged commit f672069 into main Nov 4, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants