Class template polymorphic_allocator
boost::container::pmr::polymorphic_allocator
 
Synopsis
Description
Специализация шаблона класса<polymorphic_allocator>соответствует требованиям Allocator. Построенные с различными ресурсами памяти, различные экземпляры одной и той же специализации могут проявлять совершенно разное поведение распределения. Этот полиморфизм времени выполнения позволяет объектам, которые используютpolymorphic_allocator, вести себя так, как если бы они использовали разные типы распределителей во время выполнения, даже если они используют один и тот же тип статического распределителя.
polymorphic_allocator 
        public
       construct/copy/destruct
- <polymorphic_allocator()noexcept; >Эффекты: Устанавливает m_resource до<get_default_resource()>.
 
- <polymorphic_allocator(memory_resource*r); >Требуется: r не является нулевым. Эффекты: Устанавливает m_resource на r. Бросает: Ничего Примечания: Этот конструктор обеспечивает имплицитное преобразование из Memory_resource*. Нестандартное расширение: если r равно нулю, m_resource настроен на get_default_resource(). 
- <polymorphic_allocator(constpolymorphic_allocator&other); >Эффекты: Устанавливает m_resource to other.resource(). 
- <template<typenameU>
 polymorphic_allocator(constpolymorphic_allocator<U>&other)noexcept; >Эффекты: Устанавливает m_resource to other.resource(). 
- <polymorphic_allocator&operator=(constpolymorphic_allocator&other); >Эффекты: Устанавливает m_resource to other.resource(). 
 
polymorphic_allocator public member functions
- <T*allocate(size_tn); >Возвращение: Это эквивалентно<static_cast<T*>(m_resource->allocate(n * sizeof(T), alignof(T)))>
 .
- <voiddeallocate(T*p,size_tn); >Требуется: p был выделен из ресурса памяти x, равного *m_ресурсу, с использованием<x.allocate(n * sizeof(T), alignof(T))>.
 Эффекты: Эквивалент m_resource->deallocate(p, n* sizeof(T), alignof(T)). Бросает: Ничего. 
- <template<typenameU,class...Args>voidconstruct(U*p,Args&&...args); >Требуется: Использование распределительной конструкции Т с распределительной<this->resource()>и конструкторской аргументацией<std::forward<Args>(args)...>хорошо сформировано. [Примечание: конструкции распределительных устройств всегда хорошо сформированы для типов, которые не используют распределительные устройства. - конечное примечание]
 Эффекты: Постройте T-объект при p по конструкции аллокатора с помощью аргументов распределителя<this->resource()>и конструктора<std::forward<Args>(args)...>.
 Бросает: Ничего, кроме конструктора для Т-бросков. 
- <template<typenameU>voiddestroy(U*p); >Эффекты: p->~U(). 
- <polymorphic_allocatorselect_on_container_copy_construction()const; >Возвращение: эквивалентно<polymorphic_allocator()>
 .
- <memory_resource*resource()const; >Возвращение: m_resource.