Date
2024-02-16.23:23:05
Message id
7590

Content

Proposed resolution (approved by CWG 2024-02-16):

Change in 7.7 [expr.const] paragraph 12 as follows:

A converted constant expression of type T is an expression, implicitly converted to type T, where the converted expression is a constant expression and the implicit conversion sequence contains only
  • user-defined conversions,
  • lvalue-to-rvalue conversions (7.3.2 [conv.lval]),
  • array-to-pointer conversions (7.3.3 [conv.array]),
  • function-to-pointer conversions (7.3.4 [conv.func]),
  • qualification conversions (7.3.6 [conv.qual]),
  • integral promotions (7.3.7 [conv.prom]),
  • integral conversions (7.3.9 [conv.integral]) other than narrowing conversions (9.5.5 [dcl.init.list]),
  • floating-point promotions (7.3.8 [conv.fpprom]),
  • floating-point conversions (7.3.10 [conv.double]) where the source value can be represented exactly in the destination type,
  • null pointer conversions (7.3.12 [conv.ptr]) from std::nullptr_t,
  • null member pointer conversions (7.3.13 [conv.mem]) from std::nullptr_t, and
  • function pointer conversions (7.3.14 [conv.fctptr]),
and where the reference binding (if any) binds directly.