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
iseither
- 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, andif it is not a union, all of its non-static data members and base classes are of non-volatile literal types.