3901. Is uses-allocator construction of a cv-qualified object type still well-formed after LWG 3870?

Section: 20.2.8 [allocator.uses] Status: Tentatively NAD Submitter: Jiang An Opened: 2023-03-05 Last modified: 2023-03-22 22:35:08 UTC

Priority: Not Prioritized

View all issues with Tentatively NAD status.


LWG 3870 made std::construct_at unable to create an object of a cv-qualified type, which affects std::uninitialized_construct_using_allocator. However, uses-allocator construction is currently not required to be equivalent to some call to std::uninitialized_construct_using_allocator, which possibly implies that uses-allocator construction of a cv-qualified type may still be required to be well-formed.

Should we make such construction ill-formed?

[2023-03-22; Reflector poll]

Set status to Tentatively NAD.

Not all uses-allocator construction is done using construct_at. std::tuple<const T>(allocator_arg, alloc) does uses-allocator construction of a const type, so we can't make it ill-formed.

Proposed resolution: