Matthew Austern <>

Removing unused allocator functions

Nothing in the standard requires containers to call allocators' construct, destroy, or address member functions, and there are several open issues concerning those member functions. (401, 580, 634, and 635.) Other than test cases, there are no known uses for those member functions.  The existence of those functions impedes other useful extensions, such as in-place construction of container elements using variadic templates. This is a proposal to remove those functions.

Proposed wording

In table 34, in section 20.1.6 [lib.allocator.requirements], remove the rows describing the variables rs, and t.

In table 35, in section 20.1.6 [lib.allocator.requirements], remove the rows describing the expressions a.address(r), a.address(s), a.construct(p, t), and a.destroy(p).

In the allocator class synopsis in 20.6.1 [lib.default.allocator], remove the member functions address, construct, and destroy.

In sections [lib.allocator.members], remove the descriptions of address (paragraphs 1 and 2), construct (paragraph 12), and destroy (paragraph 13).