std::experimental::pmr::resource_adaptor, std::pmr::experimental::resource_adaptor
在头文件 <experimental/memory_resource> 中定义 |
||
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
将分配器类型 Alloc
适配为 memory_resource
接口。分配器在实际适配之前会重新绑定为 char
值类型(使用 resource-adaptor-imp
类模板),以便无论分配器模板最初实例化的值类型是什么,适配相同分配器模板的特殊化总是产生相同类型。
|
(库基础 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_void_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 所包装的分配器的结果。