This is an unofficial snapshot of the ISO/IEC JTC1 SC22 WG21 Core Issues List revision 115e. See http://www.open-std.org/jtc1/sc22/wg21/ for the official list.
2024-11-11
[Adopted at the February, 2016 meeting.]
According to 7.7 [expr.const] paragraph 5,
A constant expression is either a glvalue core constant expression whose value... or a prvalue core constant expression whose value is an object where...
Since an integer literal is prvalue that is not an object, this definition does not allow it to be a constant expression.
Proposed resolution (February, 2016):
Change 7.7 [expr.const] paragraph 5 as follows:
A constant expression is either a glvalue core constant expression whose value refers to an entity that is a permitted result of a constant expression (as defined below), or a prvalue core constant expression whose value
is an object where, for that object and its subobjectssatisfies the following constraints:
if the value is an object of class type, each non-static data member of reference type refers to an entity that is a permitted result of a constant expression,
andif the
object or subobjectvalue is of pointer type, it contains the address of an object with static storage duration, the address past the end of such an object (7.6.6 [expr.add]), the address of a function, or a null pointer value., andif the value is an object of class or array type, each subobject satisfies these constraints for the value.
An entity is a permitted result of a constant expression if...