Date
2022-11-09.23:17:18
Message id
6890

Content

Proposed resolution (CWG telecon 2022-08-12) [SUPERSEDED]:

Change in 6.8.1 [basic.types.general] paragraph 10 as follows:

A type is a literal type if it is:
  • ...
  • a possibly cv-qualified class type (Clause 11 [class]) that has all of the following properties:
    • it has a constexpr destructor (9.2.6 [dcl.constexpr]),
    • all of its non-static non-variant data members and base classes are of non-volatile literal types, and
    • it is either
      • is a closure type (7.5.6.2 [expr.prim.lambda.closure]),
      • is an aggregate type (9.5.2 [dcl.init.aggr]) for which that type (if it is a union) or each of its anonymous union members (otherwise) either has at least one variant member of non-volatile literal type or has no variant members, or
      • has at least one constexpr constructor or constructor template (possibly inherited (9.10 [namespace.udecl]) from a base class) that is not a copy or move constructor, .
    • if it is a union, at least one of its non-static data members is of non-volatile literal type, and
    • if it is not a union, all of its non-static data members and base classes are of non-volatile literal types.