std::experimental::pmr::resource_adaptor

来自cppreference.com
 
 
技术规范
文件系统库 (文件系统 TS)
库基础 (库基础 TS)
库基础 2 (库基础 TS v2)
库基础 3 (库基础 TS v3)
并行扩展 (并行 TS)
并行扩展 2 (并行 TS v2)
并发扩展 (并发 TS)
并发扩展 2 (并发 TS v2)
概念 (概念 TS)
范围 (范围 TS)
反射 (反射 TS)
数学特殊函数 (特殊函数 TR)
 
 
 
定义于头文件 <experimental/memory_resource>
template< class Alloc >

using resource_adaptor = /*resource-adaptor-imp*/<
                             typename std::allocator_traits<Allocator>::

                             template rebind_alloc<char>>;
(库基础 TS)
template< class Alloc >
class /*resource-adaptor-imp*/ : public memory_resource; // 仅用于阐释
(库基础 TS)

别名模版 resource_adaptor 将分配器类型 Allocatormemory_resource 接口适配。在实际适配前(用 resource-adaptor-imp 类模板)将分配器重绑定到 char 类型,故适配同一分配器的模板特化总是生成同一类型,无关乎分配器模板原先实例化所用的值类型。

resource-adaptor-imp 是类模板,成员描述如下。名称 resource-adaptor-imp 仅为阐释用途,而非强制规定。

除了符合分配器 (Allocator) 要求, Alloc 还必须额外满足下列要求:

本页面中的类型 memory_resorce 在 LFTS v1 与 v2 中代表 std::experimental::pmr::memory_resource ,但从 LFTS v3 起代表 std::pmr::memory_resource

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)
1) 默认构造函数。默认构造被包装分配器。
2) 复制构造函数。从 other 所包装的分配器复制构造被包装分配器。
3) 移动构造函数。从 other 所包装的分配器移动构造被包装分配器。
4)a2 初始化被包装分配器。
5)std::move(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)

pdynamic_cast<const /*resource-adaptor-imp*/*>(&other) 。若 p 为空指针值则返回 false 。否则返回用 operator== 比较 *p*this 所包装的分配器的结果。