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.

4640. Unspecified exception should not be confused with dependent_sender_error

Section: 33.9.9 [exec.getcomplsigs] Status: New Submitter: Robert Leahy Opened: 2026-09-29 Last modified: 2026-11-12

Priority: Not Prioritized

View all issues with New status.

Discussion:

33.9.9 [exec.getcomplsigs] specifies that when completion signatures are not valid an exception of "unspecified class type Except" is thrown. However, this does not prevent Except from being dependent_sender_error, or from being publicly and unambiguously derived from dependent_sender_error. In either case, the handler in 33.9.3 [exec.snd.concepts] would interpret the exception as indicating that the sender is dependent, rather than that its completion signatures are invalid for the given cv- and/or ref-qualification and/or environment.

Tim Song has pointed out that wording technology already exists to solve this (33.9.1 [exec.snd.general]): unspecified-exception.

Proposed resolution:

This wording is relative to N5054.

Modify 33.9.9 [exec.getcomplsigs] as indicated:

Let except be an rvalue subexpression of an unspecified class type Except such that move_constructible<Except> && derived_from<Except, exception> is true. Let CHECKED-COMPLSIGS(e) be e if e is a core constant expression whose type satisfies valid-completion-signatures; otherwise, it is the following expression:

(e, throw except unspecified-exception(), completion_signatures())

[...]