This page is a snapshot from the LWG issues list, see the Library Active Issues List for more information and the meaning of C++20 status.

### 3338. Rename `default_constructible` to `default_initializable`

Section: 18.4.12 [concept.default.init] Status: C++20 Submitter: Casey Carter Opened: 2019-11-18 Last modified: 2021-06-06

Priority: 0

View all other issues in [concept.default.init].

View all issues with C++20 status.

Discussion:

WG21 merged P1754R1 "Rename concepts to `standard_case` for C++20" into the working draft as LWG Motion 11 in 2019 Cologne. That proposal contains editorial instructions to rename what was the `DefaultConstructible` concept:

>     IF LWG3151 ACCEPTED:
>       default_initializable
>     ELSE
>       default_constructible

Notably LWG 3151 "`ConvertibleTo` rejects conversions from array and function types" is not the intended issue number, LWG 3149 "`DefaultConstructible` should require default initialization" is. It was made clear during discussion in LEWG that 3149 would change the concept to require default-initialization to be valid rather than value-initialization which the `is_default_constructible` trait requires. LEWG agreed that it would be confusing to have a trait and concept with very similar names yet slightly different meanings, and approved P1754R1's proposed renaming.

LWG 3149 was moved to "Ready" but not approved by WG21 until Belfast — after the application of P1754R1 to the working draft — so this renaming has not happened, but the rationale remains valid.

[2019-11-30 Issue Prioritization]

Status to Tentatively Ready and priority to 0 after eight positive votes on the reflector.

Proposed resolution:

This wording is relative to N4835.

1. Change the stable name "[concept.defaultconstructible]" to "[concept.default.init]" and retitle "Concept `default_constructible`" to "Concept `default_initializable`". Replace all references to the name `default_constructible` with `default_initializable` (There are 20 occurrences).