std::experimental::pmr:: resource_adaptor, std::pmr::experimental:: resource_adaptor
|
Определено в заголовочном файле
<experimental/memory_resource>
|
||
|
template
<
class
Alloc
>
using
resource_adaptor
=
/*resource-adaptor-imp*/
<
|
(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
), чтобы адаптация специализаций одного и того же шаблона аллокатора всегда давала один и тот же тип, независимо от типа значения, с которым изначально инстанцируется шаблон аллокатора.
|
|
(library fundamentals TS)
(until library fundamentals TS v3) |
|
|
(library fundamentals TS v3) |
resource-adaptor-imp
— это шаблон класса, члены которого описаны ниже. Имя
resource-adaptor-imp
используется только в демонстрационных целях и не является нормативным.
Помимо соответствия требованиям
Allocator
,
Alloc
должен дополнительно удовлетворять следующим требованиям:
- std:: allocator_traits < Alloc > :: pointer должен быть идентичен Alloc :: value_type * .
- std:: allocator_traits < Alloc > :: const_pointer должен быть идентичен Alloc :: value_type const * .
- std:: allocator_traits < Alloc > :: void_pointer должен быть идентичен void * .
- std:: allocator_traits < Alloc > :: const_const_pointer должен быть идентичен void const * .
Типы-члены 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) |
other
.
other
.
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
==
.