Date
2010-11-15.00:00:00
Message id
3075

Content

Proposed resolution (November, 2010) [SUPERSEDED]:

  1. Change 6.9.3.2 [basic.start.static] paragraph 2 as follows:

    • if an object with static or thread storage duration is initialized by a constructor call, if the constructor is a constexpr constructor, if all constructor arguments are constant expressions (including conversions), and if, after function invocation substitution (9.2.6 [dcl.constexpr]), every constructor call and full-expression in the mem-initializers and in the brace-or-equal-initializers for non-static data members is a constant expression

  2. Change 6.8 [basic.types] paragraph 10 as follows (wording assumes the proposed resolution of issue 981)

  3. A type is a literal type if it is:

    • a scalar type; or

    • a class type (Clause 11 [class]) that has all of the following properties:

      • it has a trivial destructor,

      • every constructor call and full-expression in the brace-or-equal-initializers for non-static data members (if any) is a constant expression (7.7 [expr.const]),

      • it is an aggregate type (9.5.2 [dcl.init.aggr]) or has at least one constexpr constructor or constructor template that is not a copy or move constructor, and

      • it has all non-static data members and base classes of literal types; or

    • an array of literal type.