3037. polymorphic_allocator and incomplete types

Section: 20.4.3 [mem.poly.allocator.class] Status: C++20 Submitter: Casey Carter Opened: 2017-11-15 Last modified: 2021-02-25

Priority: 2

View all other issues in [mem.poly.allocator.class].

View all issues with C++20 status.

Discussion:

polymorphic_allocator can trivially support the allocator completeness requirements (16.4.4.6.2 [allocator.requirements.completeness]) just as does the default allocator. Doing so imposes no implementation burden, and enables pmr::forward_list, pmr::list, and pmr::vector to support incomplete types as do the non-pmr equivalents.

[2018-01; Priority set to 2 after mailing list discussion]

[2018-08-23 Batavia Issues processing]

Status to Tentatively Ready

[2018-11, Adopted in San Diego]

Proposed resolution:

Wording relative to N4700.

  1. Add a new paragraph in 20.4.3 [mem.poly.allocator.class] after para 1:

    1 A specialization of class template pmr::polymorphic_allocator conforms to the Allocator requirements [...]

    -?- All specializations of class template pmr::polymorphic_allocator satisfy the allocator completeness requirements (16.4.4.6.2 [allocator.requirements.completeness]).