This is an unofficial snapshot of the ISO/IEC JTC1 SC22 WG21 Core Issues List revision 119e. See http://www.open-std.org/jtc1/sc22/wg21/ for the official list.

2026-04-17


3128. Potentially-throwing unevaluated operands

Section: 14.5  [except.spec]     Status: DR     Submitter: Richard Smith     Date: 2018-05-06

[Accepted as a DR at the March, 2026 meeting.]

Consider:

  void f();                          // potentially throwing
  bool b = noexcept(noexcept(f()));  // ought to be "true"

The specification does not properly handle subexpressions of the noexcept operator that are not potentially evaluated (and thus cannot contribute to any exception throwing).

Proposed resolution (approved by CWG 2025-12-05):

Change in 14.5 [except.spec] paragraph 6 as follows:

An expression E is potentially-throwing if