# std::allocator_traits

From cppreference.com
< cpp‎ | memory

Defined in header `<memory>` |  |
template< class Alloc > struct allocator_traits; |  | (since C++11)

The `allocator_traits` class template provides the standardized way to access various properties of `Allocator`s. 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 `allocator_traits` implements all required functionality.

The default, non-specialized, `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*
`const_pointer` | Alloc::const_pointer if present, otherwise std::pointer_traits<pointer>::rebind<const value_type>
`void_pointer` | Alloc::void_pointer if present, otherwise std::pointer_traits<pointer>::rebind<void>
`const_void_pointer` | Alloc::const_void_pointer if present, 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`(since C++17) | Alloc::is_always_equal if present, otherwise std::is_empty<Alloc>::type

### Member alias templates

Type | Definition
`rebind_alloc<T>` | Alloc::rebind<T>::other if present, otherwise Alloc<T, Args> if this Alloc is Alloc<U, Args>
`rebind_traits<T>` | std::allocator_traits<rebind_alloc<T>>

### Member functions

allocate [static] | allocates uninitialized storage using the allocator (public static member function)
deallocate [static] | deallocates storage using the allocator (public static member function)
construct [static] | constructs an object in the allocated storage (function template)
destroy [static] | destructs an object stored in the allocated storage (function template)
max_size [static] | returns the maximum object size supported by the allocator (public static member function)
select_on_container_copy_construction [static] | obtains the allocator to use after copying a standard container (public static member function)

### See also

allocator | the default allocator (class template)
scoped_allocator_adaptor (C++11) | implements multi-level allocator for multi-level containers (class template)
pointer_traits (C++11) | provides information about pointer-like types (class template)

Retrieved from "http://en.cppreference.com/mwiki/index.php?title=cpp/memory/allocator_traits&oldid=91192"