Spec-Zone.ru › C++

std::allocator_traits

Определено в заголовке <memory>
template< class Alloc >
struct allocator_traits;
(с C++11)

Шаблон класса allocator_traits предоставляет стандартный способ доступа к различным свойствам аллокаторов. Стандартные контейнеры и другие компоненты стандартной библиотеки обращаются к аллокаторам через этот шаблон, что позволяет использовать любой тип класса в качестве аллокатора, при условии, что пользовательская специализация std::allocator_traits реализует все необходимые функции.

Программа, которая объявляет явную или частичную специализацию std::allocator_traits является ошибочной, диагностика не требуется.

(с C++23)

По умолчанию, неспециализированный std::allocator_traits содержит следующие члены:

Типы членов

Тип Определение
allocator_type Alloc
value_type Alloc::value_type
pointer Alloc::pointer если присутствует, в противном случае value_type*
const_pointer Alloc::const_pointer если присутствует, в противном случае std::pointer_traits<указатель>::rebind<const value_type>
void_pointer Alloc::void_pointer если присутствует, в противном случае std::pointer_traits<указатель>::rebind<void>
const_void_pointer Alloc::const_void_pointer если присутствует, в противном случае std::pointer_traits<указатель>::rebind<const void>
difference_type Alloc::difference_type если присутствует, в противном случае std::pointer_traits<указатель>::difference_type
size_type Alloc::size_type если присутствует, в противном случае std::make_unsigned<difference_type>::type
propagate_on_container_copy_assignment Alloc::propagate_on_container_copy_assignment если присутствует, в противном случае std::false_type
propagate_on_container_move_assignment Alloc::propagate_on_container_move_assignment если присутствует, в противном случае std::false_type
propagate_on_container_swap Alloc::propagate_on_container_swap если присутствует, в противном случае std::false_type
is_always_equal Alloc::is_always_equal если присутствует, в противном случае std::is_empty<Alloc>::type

Псевдонимы шаблонов членов

Тип Определение
rebind_alloc<T> Alloc::rebind<T>::other если присутствует, в противном случае SomeAllocator<T, Args> если этот Alloc имеет вид SomeAllocator<U, Args>, где Args - ноль или более аргументов типа
rebind_traits<T> std::allocator_traits<rebind_alloc<T>>

Функции членов

allocate
[статический]
выделяет неинициализированное хранилище с помощью аллокатора
(публичная статическая функция-член)
allocate_at_least
[статический] (C++23)
выделяет хранилище, по крайней мере, такого же размера, как запрошенный размер, через аллокатор
(публичная статическая функция-член)
deallocate
[статический]
освобождает хранилище с помощью аллокатора
(публичная статическая функция-член)
construct
[статический]
создает объект в выделенном хранилище
(шаблон функции)
destroy
[статический]
уничтожает объект, хранящийся в выделенном хранилище
(шаблон функции)
max_size
[статический]
возвращает максимальный размер объекта, поддерживаемый аллокатором
(публичная статическая функция-член)
select_on_container_copy_construction
[статический]
получает аллокатор, который нужно использовать после копирования стандартного контейнера
(публичная статическая функция-член)

Отчеты об ошибках

Следующие отчеты об ошибках, изменяющие поведение, были применены ретроактивно к ранее опубликованным стандартам C++.

DR Применено к Поведение, как опубликовано Корректное поведение
LWG 2108 C++11 не было способа показать, что аллокатор бессостоятельный is_always_equal предоставлено

См. также

allocator
по умолчанию аллокатор
(шаблон класса)
scoped_allocator_adaptor
(C++11)
реализует многоуровневый аллокатор для многоуровневых контейнеров
(шаблон класса)
pointer_traits
(C++11)
предоставляет информацию о типах, подобных указателям
(шаблон класса)

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/memory/allocator_traits

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API