cpp/named req/AllocatorAwareContainer

An is a  that holds an instance of an  and uses that instance in all its member functions to allocate and deallocate memory and to construct and destroy objects in that memory (such objects may be container elements, nodes, or, for unordered containers, bucket arrays).

The following rules apply to container construction


 * Copy constructors of s obtain their instances of the allocator by calling on the allocator of the container being copied.
 * Move constructors obtain their instances of allocators by move-constructing from the allocator belonging to the old container.
 * All other constructors take a parameter.

The only way to replace an allocator is copy-assignment, move-assignment, and swap:


 * Copy-assignment will replace the allocator only if is
 * Move-assignment will replace the allocator only if is
 * Swap will replace the allocator only if is . Specifically, it will exchange the allocator instances through an unqualified call to the non-member function swap, see.

Note: swapping two containers with unequal allocators if is  is undefined behavior.


 * The accessor obtains a copy of the allocator that was used to construct the container or installed by the most recent allocator replacement operation.

Standard library
All standard library containers except std are s:
 * std
 * std
 * std
 * std
 * std
 * std
 * std
 * std
 * std
 * std
 * std
 * std
 * std