Destructor exceptions for temporaries in noexcept expressions
Section [expr.unary.noexcept]
Sebastian Redl

Created on 2011-08-16.00:00:00 last changed 101 months ago


Date: 2012-10-15.00:00:00

[Moved to DR at the October, 2012 meeting.]

Date: 2012-02-15.00:00:00

Proposed resolution (February, 2012):

  1. Change 6.9.1 [intro.execution] paragraph 10 as follows:

  2. A full-expression is an expression that is not a subexpression of another expression. [Note: in some contexts such as unevaluated operands, a syntactic subexpression is considered a full-expression (Clause 7 [expr]). —end note] If a language construct...
  3. Change Clause 7 [expr] paragraph 7 as follows:

  4. ...An unevaluated operand is not evaluated. An unevaluated operand is considered a full-expression. [Note:...

[Drafting note: This uniformly handles sizeof(A()), noexcept(A()), typeid(A()), and decltype(A()) with regard to the semantic requirements on ~A (accessible and not deleted), which might be checked via SFINAE. A programmer can use decltype(new A) to avoid considering the destructor. If this is undesired, an alternative change just addresses the noexecept issue:]

[Editing note: all the occurrences of “potentially evaluated” in [expr.unary.noexcept] paragraph 3 should be hyphenated.]

Date: 2011-08-16.00:00:00

The result of the noexcept operator does not consider possible exceptions thrown by the destructors for temporaries created in the operand expression.

Date User Action Args
2014-03-03 00:00:00adminsetstatus: drwp -> cd3
2013-05-03 00:00:00adminsetstatus: dr -> drwp
2012-11-03 00:00:00adminsetmessages: + msg4134
2012-11-03 00:00:00adminsetstatus: ready -> dr
2012-02-27 00:00:00adminsetstatus: review -> ready
2011-09-06 00:00:00adminsetmessages: + msg3502
2011-08-16 00:00:00admincreate