std::experimental::pmr::resource_adaptor, std::pmr::experimental::resource_adaptor
| Определено в заголовочном файле <experimental/memory_resource>
|
||
template< class Alloc > using resource_adaptor = /*resource-adaptor-imp*/< typename std::allocator_traits<Allocator>:: template rebind_alloc<char>>; |
(ТС основ библиотеки) | |
template< class Alloc > class /*resource-adaptor-imp*/ : public memory_resource; // только для экспозиции |
(ТС основ библиотеки) | |
Шаблон псевдонима resource_adaptor адаптирует тип аллокатора Alloc с интерфейсом memory_resource. Аллокатор повторно привязывается к типу значения char до того, как он будет фактически адаптирован (с использованием шаблона класса resource-adaptor-imp), так что адаптация специализаций одного и того же шаблона аллокатора всегда даёт тот же тип, независимо от типа значения, с которым изначально создан экземпляр шаблона аллокатора.
|
|
(ТС основ библиотеки) (до основы библиотеки TS v3) |
|
|
(ТС основы библиотеки 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
<tbody> </tbody> /*resource-adaptor-imp*/() = default; |
(1) | (ТС основ библиотеки) |
/*resource-adaptor-imp*/(const /*resource-adaptor-imp*/& other) = default; |
(2) | (ТС основ библиотеки) |
/*resource-adaptor-imp*/(/*resource-adaptor-imp*/&& other) = default; |
(3) | (ТС основ библиотеки) |
explicit /*resource-adaptor-imp*/(const Alloc& a2); |
(4) | (ТС основ библиотеки) |
explicit /*resource-adaptor-imp*/(Alloc&& a2); |
(5) | (ТС основ библиотеки) |
other.other.a2.std::move(a2).Параметры
| other | — | другой объект resource-adaptor-imp, из которого нужно скопировать или переместить
|
| a2 | — | другой объект Alloc, из которого нужно скопировать или переместить
|
std::experimental::pmr::resource-adaptor-imp::get_allocator
<tbody> </tbody> allocator_type get_allocator() const; |
(ТС основ библиотеки) | |
Возвращает копию обёрнутого аллокатора.
std::experimental::pmr::resource-adaptor-imp::operator=
<tbody> </tbody> /*resource-adaptor-imp*/& operator=(const /*resource-adaptor-imp*/& other) = default; |
(ТС основ библиотеки) | |
Оператор копирования присваиванием по умолчанию. Копирование присваивает обёрнутый аллокатор из аллокатора other.
resource-adaptor-imp::do_allocate
<tbody> </tbody> protected: virtual void* do_allocate(std::size_t bytes, std::size_t alignment); |
(ТС основ библиотеки) | |
Выделяет память с помощью функции-элемента allocate обёрнутого аллокатора.
resource-adaptor-imp::do_deallocate
<tbody> </tbody> protected: virtual void do_deallocate(void *p, std::size_t bytes, std::size_t alignment); |
(ТС основ библиотеки) | |
Освобождает память, на которую указывает p используя функцию-элемент deallocate обёрнутого аллокатора. p должен быть выделен с использованием функции-элемента allocate аллокатора, который при сравнении эквивалентен обёрнутому аллокатору, и не должен быть впоследствии освобождён.
resource-adaptor-imp::do_is_equal
<tbody> </tbody> virtual bool do_is_equal(const memory_resource& other) const noexcept; |
(ТС основ библиотеки) | |
Пусть p будет dynamic_cast<const /*resource-adaptor-imp*/*>(&other). Если p является значением нулевого указателя, возвращается false. Иначе возвращается результат сравнения аллокаторов, обёрнутых в *p и *this, используя operator==.