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

2559. Error in LWG 2234's resolution

Section: 18.3 [assertions] Status: C++17 Submitter: Tim Song Opened: 2015-11-07 Last modified: 2017-07-30

Priority: 0

View other active issues in [assertions].

View all other issues in [assertions].

View all issues with C++17 status.

Discussion:

The resolution of LWG 2234 says that assert(E) is a constant subexpression if "NDEBUG is defined at the point where assert(E) appears".

This is incorrect, as noted in one of STL's comments in that issue's discussion, but was apparently overlooked.

The proposed resolution below just borrows STL's phrasing from the discussion.

[2016-02, Issues Telecon]

P0; move to Tentatively Ready.

Proposed resolution:

This wording is relative to N4567.

  1. Change 18.3 [assertions] p2 as indicated:

    An expression assert(E) is a constant subexpression (15.3.6 [defns.const.subexpr]), if

    • NDEBUG is defined at the point where assert(E) appearsassert is last defined or redefined, or

    • […]