table of contents
std::allocator_traits(3) | C++ Standard Libary | std::allocator_traits(3) |
NAME¶
std::allocator_traits - std::allocator_traits
Synopsis¶
Defined in header <memory>
template< class Alloc > (since C++11)
struct allocator_traits;
The allocator_traits class template provides the standardized way to access
various
properties of Allocators. The standard containers and other standard library
components access allocators through this template, which makes it possible
to use
any class type as an allocator, as long as the user-provided specialization
of
std::allocator_traits implements all required functionality.
A program that declares an explicit or partial specialization of (since
C++23)
std::allocator_traits is ill-formed, no diagnostic required.
The default, non-specialized, std::allocator_traits contains the following
members:
Member types¶
Type Definition
allocator_type Alloc
value_type Alloc::value_type
pointer Alloc::pointer if present, otherwise
value_type*
Alloc::const_pointer if present, otherwise
const_pointer std::pointer_traits<pointer>::rebind<const
value_type>
void_pointer Alloc::void_pointer if present, otherwise
std::pointer_traits<pointer>::rebind<void>
Alloc::const_void_pointer if present,
const_void_pointer otherwise
std::pointer_traits<pointer>::rebind<const
void>
difference_type Alloc::difference_type if present, otherwise
std::pointer_traits<pointer>::difference_type
size_type Alloc::size_type if present, otherwise
std::make_unsigned<difference_type>::type
propagate_on_container_copy_assignment
Alloc::propagate_on_container_copy_assignment
if present, otherwise std::false_type
propagate_on_container_move_assignment
Alloc::propagate_on_container_move_assignment
if present, otherwise std::false_type
propagate_on_container_swap Alloc::propagate_on_container_swap if
present, otherwise std::false_type
is_always_equal Alloc::is_always_equal if present, otherwise
std::is_empty<Alloc>::type
Member alias templates¶
Type Definition
Alloc::rebind<T>::other if present, otherwise SomeAllocator<T,
rebind_alloc<T> Args> if this Alloc is of the form
SomeAllocator<U, Args>, where
Args is zero or more type arguments
rebind_traits<T> std::allocator_traits<rebind_alloc<T>>
Member functions¶
allocate allocates uninitialized storage using the
[static] allocator
(public static member function)
allocate_at_least allocates storage at least as large as the
[static] (C++23) requested size via an allocator
(public static member function)
deallocate deallocates storage using the allocator
[static] (public static member function)
construct constructs an object in the allocated storage
[static] (function template)
destroy destructs an object stored in the allocated
[static] storage
(function template)
max_size returns the maximum object size supported by
[static] the allocator
(public static member function)
select_on_container_copy_construction obtains the allocator to use after
copying a
[static] standard container
(public static member function)
Defect reports
The following behavior-changing defect reports were applied retroactively to
previously published C++ standards.
DR Applied to Behavior as published Correct behavior
LWG 2108 C++11 there was no way to show an allocator is_always_equal provided
is stateless
See also¶
AllocatorAwareContainer container using allocator; associated
traits (e.g.
(C++11) propagate_on_container_swap) usage
(named requirement)
allocator the default allocator
(class template)
scoped_allocator_adaptor implements multi-level allocator for multi-level
containers
(C++11) (class template)
pointer_traits provides information about pointer-like types
(C++11) (class template)
2024.06.10 | http://cppreference.com |