命名空间
变体
操作

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

来自 cppreference.cn
 
 
实验性
技术规范
文件系统库 (filesystem TS)
库基础 (library fundamentals TS)
库基础 2 (library fundamentals TS v2)
库基础 3 (library fundamentals TS v3)
并行性扩展 (parallelism TS)
并行性扩展 2 (parallelism TS v2)
并发性扩展 (concurrency TS)
并发性扩展 2 (concurrency TS v2)
概念 (concepts TS)
范围 (ranges TS)
反射 (reflection TS)
数学特殊函数 (special functions 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; // for exposition only
(库基础 TS)

别名模板 resource_adaptor 使用 memory_resource 接口适配分配器类型 Alloc。分配器在实际适配之前(使用 resource-adaptor-imp 类模板)被重新绑定到 char 值类型,以便适配同一分配器模板的特化始终产生相同的类型,而与分配器模板最初实例化的值类型无关。

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

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

resource_adaptor 定义在命名空间 std::pmr::experimental 中,并且此页面中的基类型 memory_resorcestd::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) 初始化包装的分配器。

参数

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 包装的分配器的结果。