Шаблон классаallocator_traitsобеспечивает единый интерфейс для всех типов распределителей. Этот класс представляет собой C++03-совместимую реализацию std::allocator_traits
allocator_traits
public
types
TypedefНе уточняетсяуказатель;
Распределитель:: указатель, если такой тип существует; в противном случае значение_тип*
typedefsee_documentationconst_pointer;
Allocator::const_pointer, если такой тип существует; в противном случае pointer_traits::rebind
typedefсм._documentationreference;
Nonstandard extension Allocator::ference if such type exist; other, value_type&
typedefсм._documentationconst_reference;
Нестандартное расширение Выделитель::const_reference, если такой тип существует; в противном случае, const value_type&
typedefсм._documentationvoid_pointer;
Allocator::void_pointer, если такой тип существует; в противном случае pointer_traits::rebind.
typedefsee_documentationconst_void_pointer;
Allocator::const_void_pointer, если такой тип существует; otherwis e, pointer_traits::rebind
typedefсм._documentationdifference_type;
Выделитель::difference_type, если такой тип существует; в противном случае pointer_traits::difference_type.
typedefсм._documentationsize_type;
Выделитель::size_type, если такой тип существует; в противном случае make_unsigned::type
Выделитель::propagate_on_container_copy_assignment, если такой тип существует, иначе тип с внутренним постоянным статическим булевым элементом<value>== ложный.
Выделитель::propagate_on_container_move_assignment, если такой тип существует, иначе тип с внутренним постоянным статическим булевым элементом<value>== false.
Выделитель::propagate_on_container_swap, если такой тип существует, иначе тип с внутренним постоянным статическим булевым элементом<value>== ложный.
typedefsee_documentationis_always_equal;
Allocator::is_always_equal, если такой тип существует, в противном случае тип с внутренним постоянным статическим булевым элементом<value>== is_empty< Allocator>::value
typedefsee_documentationis_partially_propagable;
Выделитель::is_partially_propagable, если такой тип существует, иначе тип с внутренним постоянным статическим булевым элементом<value>== ложныйПримечание: Нестандартное расширение, используемое для реализации<small_vector_allocator>.
typedefsee_documentationrebind_alloc;
Определение распределителя: Allocator::rebind< T>::другой, если такой тип существует; в противном случае, Allocatorесли Allocator представляет собой шаблон класса, инстанциацию формы Allocator, где Args является аргументом нулевого или более типа; в противном случае, инстанциация rebind_alloc плохо сформирована.
В компиляторах C++03<rebind_alloc>есть структура, полученная из распределителя, выведенного ранее подробными правилами.
Эффекты: вызовы<a.construct(p, std::forward<Args>(args)...)>, если этот вызов хорошо сформирован; в противном случае вызывает<::new (static_cast<void*>(p)) T(std::forward<Args>(args)...)>
Возвращение:<true>, если<is_always_equal::value == true>, в противном случае<a == b>
.
Статья Struct template allocator_traits раздела The Boost C++ Libraries BoostBook Documentation Subset Boost.Container Header Reference может быть полезна для разработчиков на c++ и boost.
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.