Namespaces
Variants

std::experimental::pmr:: resource_adaptor, std::pmr::experimental:: resource_adaptor

From cppreference.net
Определено в заголовочном файле <experimental/memory_resource>
template < class Alloc >

using resource_adaptor = /*resource-adaptor-imp*/ <
typename std:: allocator_traits < Alloc > ::

template rebind_alloc < char >> ;
(library fundamentals TS)
template < class Alloc >
class /*resource-adaptor-imp*/ : public memory_resource ; // только для демонстрации
(library fundamentals TS)

Псевдоним-шаблон resource_adaptor адаптирует тип аллокатора Alloc с интерфейсом memory_resource . Аллокатор перепривязывается к типу значения char перед фактической адаптацией (с использованием шаблона класса resource-adaptor-imp ), чтобы адаптация специализаций одного и того же шаблона аллокатора всегда давала один и тот же тип, независимо от типа значения, с которым изначально инстанцируется шаблон аллокатора.

resource_adaptor определяется в пространстве имен std::experimental::pmr , и базовый тип memory_resorce на этой странице является std::experimental::pmr::memory_resource .

(library fundamentals TS)
(until library fundamentals TS v3)

resource_adaptor определяется в пространстве имен std::pmr::experimental , и базовый тип memory_resorce на этой странице является std::pmr::memory_resource .

(library fundamentals TS v3)

resource-adaptor-imp — это шаблон класса, члены которого описаны ниже. Имя resource-adaptor-imp используется только в демонстрационных целях и не является нормативным.

Помимо соответствия требованиям Allocator , Alloc должен дополнительно удовлетворять следующим требованиям:

Типы-члены resource-adaptor-imp

Тип члена Определение
allocator_type Alloc

Функции-члены resource-adaptor-imp

resource-adaptor-imp :: resource-adaptor-imp

/*resource-adaptor-imp*/ ( ) = default ;
(1) (library fundamentals TS)
/*resource-adaptor-imp*/ ( const /*resource-adaptor-imp*/ & other )
= default ;
(2) (library fundamentals TS)
/*resource-adaptor-imp*/ ( /*resource-adaptor-imp*/ && other )
= default ;
(3) (library fundamentals TS)
explicit /*resource-adaptor-imp*/ ( const Alloc & a2 ) ;
(4) (library fundamentals TS)
explicit /*resource-adaptor-imp*/ ( Alloc && a2 ) ;
(5) (library fundamentals TS)
1) Конструктор по умолчанию. Создает обернутый аллокатор с помощью конструктора по умолчанию.
2) Конструктор копирования. Создает обернутый аллокатор путем копирования аллокатора, обернутого в other .
3) Конструктор перемещения. Создает обернутый аллокатор путем перемещения аллокатора, обернутого в other .
4) Инициализирует обернутый аллокатор с помощью a2 .
5) Инициализирует обернутый аллокатор с помощью std :: move ( a2 ) .

Параметры

other - другой объект resource-adaptor-imp для копирования или перемещения
a2 - другой объект Alloc для копирования или перемещения

resource-adaptor-imp :: get_allocator

allocator_type get_allocator ( ) const ;
(library fundamentals TS)

Возвращает копию обёрнутого аллокатора.

resource-adaptor-imp :: operator=

/*resource-adaptor-imp*/ & operator = ( const /*resource-adaptor-imp*/ & other )
= default ;
(library fundamentals TS)

Оператор копирующего присваивания по умолчанию. Копирует обёрнутый аллокатор из other .

resource-adaptor-imp :: do_allocate

protected :
virtual void * do_allocate ( std:: size_t bytes, std:: size_t alignment ) ;
(библиотека fundamentals TS)

Выделяет память с использованием функции-члена allocate обёрнутого аллокатора.

resource-adaptor-imp :: do_deallocate

protected :
virtual void do_deallocate ( void * p, std:: size_t bytes, std:: size_t alignment ) ;
(library fundamentals TS)

Освобождает память, на которую указывает p , используя функцию-член deallocate обёрнутого аллокатора.

p должен быть выделен с помощью функции-члена allocate аллокатора, который сравнивается как равный обёрнутому аллокатору, и не должен был быть освобождён ранее.

resource-adaptor-imp :: do_is_equal

protected :
virtual bool do_is_equal ( const memory_resource & other ) const noexcept ;
(library fundamentals TS)

Пусть p будет dynamic_cast < const /*resource-adaptor-imp*/ * > ( & other ) . Если p является нулевым указателем, возвращает false . В противном случае возвращает результат сравнения аллокаторов, обернутых в * p и * this с использованием operator == .