std::experimental::pmr::resource_adaptor, std::pmr::experimental::resource_adaptor
template< class Alloc > using resource_adaptor = /*resource-adaptor-imp*/< |
(库基础 TS) | |
template< class Alloc > class /*resource-adaptor-imp*/ : public memory_resource; // for exposition only |
(库基础 TS) | |
别名模板 resource_adaptor
使用 memory_resource
接口适配分配器类型 Alloc
。分配器在实际适配之前(使用 resource-adaptor-imp
类模板)被重新绑定到 char
值类型,以便适配同一分配器模板的特化始终产生相同的类型,而与分配器模板最初实例化的值类型无关。
|
(库基础 TS) (直到库基础 TS v3) |
|
(库基础 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) | (库基础 TS) |
/*resource-adaptor-imp*/(const /*resource-adaptor-imp*/& other) = default; |
(2) | (库基础 TS) |
/*resource-adaptor-imp*/(/*resource-adaptor-imp*/&& other) = default; |
(3) | (库基础 TS) |
explicit /*resource-adaptor-imp*/(const Alloc& a2); |
(4) | (库基础 TS) |
explicit /*resource-adaptor-imp*/(Alloc&& a2); |
(5) | (库基础 TS) |
other
包装的分配器复制构造包装的分配器。other
包装的分配器移动构造包装的分配器。a2
初始化包装的分配器。参数
other | - | 另一个要复制或移动的 resource-adaptor-imp 对象 |
a2 | - | 另一个要复制或移动的 Alloc 对象 |
resource-adaptor-imp::get_allocator
allocator_type get_allocator() const; |
(库基础 TS) | |
返回包装的分配器的副本。
resource-adaptor-imp::operator=
/*resource-adaptor-imp*/& operator=(const /*resource-adaptor-imp*/& other) = default; |
(库基础 TS) | |
默认的复制赋值运算符。从 other
的分配器复制赋值包装的分配器。
resource-adaptor-imp::do_allocate
protected: virtual void* do_allocate(std::size_t bytes, std::size_t alignment); |
(库基础 TS) | |
使用包装的分配器的 allocate
成员函数分配内存。
resource-adaptor-imp::do_deallocate
protected: virtual void do_deallocate(void *p, std::size_t bytes, std::size_t alignment); |
(库基础 TS) | |
使用包装的分配器的 deallocate
成员函数释放 p
指向的存储。
p
必须已使用与包装的分配器比较相等的分配器的 allocate
成员函数分配,并且不得随后被释放。
resource-adaptor-imp::do_is_equal
protected: virtual bool do_is_equal(const memory_resource& other) const noexcept; |
(库基础 TS) | |
令 p
为 dynamic_cast<const /*resource-adaptor-imp*/*>(&other)。如果 p
是空指针值,则返回 false。否则,返回使用 operator== 比较由 *p 和 *this 包装的分配器的结果。