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; // 仅用于阐释 |
(库基础 TS) | |
别名模版 resource_adaptor
将分配器类型 Allocator
与 memory_resource
接口适配。在实际适配前(用 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_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 所包装的分配器的结果。