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

[CPP29 REORG] Dissolve [except] #7320

Open
wants to merge 7 commits into
base: main
Choose a base branch
from

Conversation

AlisdairM
Copy link
Contributor

This branch is a preview of work to dissolve the [except] clause into the rest of the standard, according to issue #7317.

It provides plenty of time for early reviews to get the details right. The initial commit maintains the history of individual commits to help track the process.

As most of this branch is cut and paste, I plan to update sometime after each new working draft is published, by diffing against the previous working draft's [exception] and applying manual edits to the new location. However, any branch that will land in C++29 will follow the same process to redistribute the wording from the main branch, to ensure fidelity.

Several concurrent fixes.  First include the normative wording
that 'uncaught_exceptions' returns the number of uncaught
exceptions *on the current thread*.  This wording is present
in the core language.

Then move the core wording for when an exception is uncaught
directly into the text that talks about caught and uncaught
exceptions.  In the process, turn the reference to
 into a note, so that there is only
one normative specification.

Finally, remove [except.uncaught] as it is now empty, and add
the missing descriptive sentence to the intro paragraph of
[except.special.general].  This happens to produce quite a
pleasing page-break, but that is just luck, not design.
While 'std:terminate' was originally conceived as the way to
report failures in the exception handling machinery, it has
evolved to become a more general tool for reporting unrecoverable
failures in the C++ runtime.  This rewording attempts to address
that evolving design, and in doing so addresses the outstanding
%FIXME% that the current text is not adequately descriptive in
the first place.
Now that the terminate function is more general than
just failures of the exception machinery, it belongs
with Start and termination.
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.

1 participant