This page is a snapshot from the LWG issues list, see the Library Active Issues List for more information and the meaning of New status.

3640. Clarify which exceptions are propagated

Section: 16.4.4 [utility.requirements] Status: New Submitter: Johel Ernesto Guerrero Peña Opened: 2021-11-01 Last modified: 2022-10-01

Priority: 3

View all other issues in [utility.requirements].

View all issues with New status.

Discussion:

This originated from the editorial issues #4863 and #4869.

Some Throws: elements are specified to throw the exceptions an evaluation of E exits with. This wording excludes exceptions thrown involving the initialization and destruction of parameters of E, temporaries of E, and the destruction of the result of E.

The proposed wording below fixes this with front matter. As if affects more than just Throws: elements, it talks about requirements and guarantees when E exits via an exception.

As noted in the originating editorial issues, some LWG members prefer fixing each individual case of wording used to describe exception propagation rather than patching them up with front matter.

[2022-01-30; Reflector poll]

Set priority to 3 after reflector poll. "Any throwing destructor is library UB already, so there's no need to contort the wording to accommodate those."

Previous resolution [SUPERSEDED]:

This wording is relative to N4901.

  1. Add a new subclause [exception.propagation] at the end of 16.4.4 [utility.requirements] (after 16.4.4.6.2 [allocator.requirements.completeness]):

[2022-09-28; Johel provides revised wording]

Proposed resolution:

This wording is relative to N4917.

  1. Add a new subclause [exception.propagation] at the end of 16.4.4 [utility.requirements] (after 16.4.4.6.2 [allocator.requirements.completeness]):