Created on 2007-08-12.00:00:00 last changed 161 months ago
[Voted into the WP at the September, 2008 meeting.]
Proposed resolution (June, 2008):
Change 9.2.6 [dcl.constexpr] paragraph 7 as follows:
A constexpr specifier used in an object declaration declares the object as const. Such an object shall be
initialized, and every expression that appears in its initializer (8.5)shall be a constant expression. Every implicit conversion used...
The current wording of 9.2.6 [dcl.constexpr] paragraph 7 seems not quite correct. It reads,
A constexpr specifier used in an object declaration declares the object as const. Such an object shall be initialized, and every expression that appears in its initializer (9.4 [dcl.init]) shall be a constant expression.
The phrase “every expression” is intended to cover multiple arguments to a constexpr constructor and multiple expressions in an aggregate initializer. However, it could be read (incorrectly) as saying that non-constant expressions cannot appear as subexpressions in such initializers, even in places where they do not render the full-expression non-constant (i.e., as unevaluated operands and in the unselected branches of &&, ||, and ?:). Perhaps this problem could be remedied by replacing “every expression” with “every full-expression?”
|2008-10-05 00:00:00||admin||set||messages: + msg1818|
|2008-10-05 00:00:00||admin||set||status: ready -> cd1|
|2008-06-29 00:00:00||admin||set||messages: + msg1680|
|2008-06-29 00:00:00||admin||set||status: drafting -> ready|
|2007-10-09 00:00:00||admin||set||status: open -> drafting|