命名空间
变体
操作

std::experimental::pmr::resource_adaptor, std::pmr::experimental::resource_adaptor

来自 cppreference.cn
< cpp‎ | 实验性
 
 
实验性
技术规范
文件系统库 (文件系统 TS)
库基础 (库基础 TS)
库基础 2 (库基础 TS v2)
库基础 3 (库基础 TS v3)
并行性扩展 (并行性 TS)
并行性扩展 2 (并行性 TS v2)
并发性扩展 (并发性 TS)
并发扩展 2 (并发 TS v2)
概念 (概念 TS)
范围 (范围 TS)
反射 (反射 TS)
数学特殊函数 (特殊函数 TR)
实验性非 TS
模式匹配
线性代数
std::execution
契约
2D 图形
 
 
 
template< class Alloc >

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

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

别名模板 resource_adaptor 将分配器类型 Alloc 适配到 memory_resource 接口。在实际适配之前(使用 resource-adaptor-imp 类模板),分配器会重新绑定到 char 值类型,这样无论分配器模板最初使用何种值类型实例化,适配相同分配器模板的特化总是产生相同的类型。

resource_adaptor 定义在命名空间 std::experimental::pmr 中,此页面中的基类型 memory_resourcestd::experimental::pmr::memory_resource

(库基础 TS)
(直到 library fundamentals TS v3)

resource_adaptor 定义在命名空间 std::pmr::experimental 中,此页面中的基类型 memory_resourcestd::pmr::memory_resource

(库基础 TS v3)

resource-adaptor-imp 是一个类模板,其成员如下所述。名称 resource-adaptor-imp 仅用于解释,不具规范性。

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

[编辑] 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) 初始化所包装的分配器。

参数

其他 - 另一个 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 所包装的分配器的结果。