std::experimental::pmr::resource_adaptor
| template < class Alloc > class resource_adaptor_imp : public memory_resource; // 仅为说明 |
(库基础 TS) | |
别名模版 resource_adaptor 将分配器类型 Allocator 与 memory_resource 接口适配。在实际适配前(用 resource_adaptor_imp 类模板)将分配器重绑定到 char 类型,故适配同一分配器的模板特化总是生成同一类型,无关乎分配器模板原先实例化所用的值类型。
resource_adaptor_imp 是类模板,成员描述如下。名称 resource_adaptor_imp 仅为说明用途,而非强制规定。
在满足分配器 (Allocator) 要求外, Allocator 必须额外满足下列要求:
- 其
pointer应当等同于value_type*。 - 其
const_pointer应当等同于value_type const*。 - 其
void_pointer应当等同于void*。 - 其
const_void_pointer应当等同于void const*。
resource_adaptor_imp 的成员类型
| 成员类型 | 定义 |
allocator_type
|
Alloc
|
resource_adaptor_imp 的成员函数
std::experimental::pmr::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 对象
|
std::experimental::pmr::resource_adaptor_imp::get_allocator
| allocator_type get_allocator() const; |
(库基础 TS) | |
返回被包装分配器的副本。
std::experimental::pmr::resource_adaptor_imp::operator=
| resource_adaptor_imp& operator=(const resource_adaptor_imp& other) = default; |
(库基础 TS) | |
默认化的复制赋值运算符。从 other 的被包装分配器复制赋值被包装分配器。
std::experimental::pmr::resource_adaptor_imp::do_allocate
| virtual void* do_allocate(std::size_t bytes, std::size_t alignment); |
(库基础 TS) | |
用被包装分配器的 allocate 成员函数分配内存。
std::experimental::pmr::resource_adaptor_imp::do_deallocate
| virtual void do_deallocate(void *p, std::size_t bytes, std::size_t alignment); |
(库基础 TS) | |
用被包装分配器的 deallocate 成员函数解分配 p 所指向的存储。 p 必须已经用比较等于被包装分配器的分配器的 allocate 成员函数分配,而且之后必须未被解分配。
std::experimental::pmr::resource_adaptor_imp::do_is_equal
| virtual bool do_is_equal(const memory_resource& other); |
(库基础 TS) | |
令 p 为 dynamic_cast<const resource_adaptor_imp*>(&other) 。若 p 为 nullptr 则返回 false 。否则返回用 operator== 比较 *p 和 *this 所包装的分配器的结果。