std::polymorphic

来自cppreference.com
< cpp‎ | memory
 
 
内存管理库
(仅用于阐述*)
分配器
未初始化内存算法
受约束的未初始化内存算法
内存资源
未初始化存储(C++20 前)
(C++17 弃用)
(C++17 弃用)
垃圾收集器支持(C++23 前)
(C++11)(C++23 前)
(C++11)(C++23 前)
(C++11)(C++23 前)
(C++11)(C++23 前)
(C++11)(C++23 前)
(C++11)(C++23 前)
 
 
在标头 <memory> 定义
template<class T, class Allocator =std::allocator<T>>
class polymorphic;
(1) (C++26 起)
namespace pmr {

    template<class T >
    using polymorphic =
        std::polymorphic<T, std::pmr::polymorphic_allocator<T>>;

}
(2) (C++26 起)
1)std::polymorphic 是包含动态分配的对象的具有类值语义的包装器。
2)std::pmr::polymorphic 是使用多态分配器的模板别名。

std::polymorphic 对象管理拥有的对象的生存期。拥有的对象具有 T 类型或任何从 T(公开且无歧义地)派生的类型。std::polymorphic 对象只有在被移动后才会不拥有对象,此时该 std::polymorphic 对象无值

每个 std::polymorphic<T, Allocator> 类型对象都会使用一个 Allocator 对象来分配和释放拥有的对象所需的存储。

如果程序声明了 std::polymorphic 的显式特化或部分特化,那么行为未定义。

目录

[编辑]模板形参

T - 拥有的对象的类型
Allocator - 关联的分配器的类型
类型要求
-
T 可以是不完整类型
-
如果 T 是以下类型之一,那么程序非良构:
-
如果 Allocator 不满足分配器(Allocator) 的要求,那么程序非良构。
-
如果 std::allocator_traits<Allocator>::value_typeT 不同,那么程序非良构。

[编辑]嵌套类型

类型 定义
value_typeT
allocator_typeAllocator
pointertypenamestd::allocator_traits<Allocator>::pointer
const_pointertypenamestd::allocator_traits<Allocator>::const_pointer

[编辑]数据成员

成员 描述
Allocatoralloc 关联的分配器
(仅用于阐述的成员对象*)

[编辑]成员函数

构造 polymorphic 对象
(公开成员函数)[编辑]
销毁拥有的值(如果存在)
(公开成员函数)[编辑]
对内容赋值
(公开成员函数)[编辑]
观察器
访问拥有的值
(公开成员函数)[编辑]
检查 polymorphic 是否无值
(公开成员函数)[编辑]
返回关联的分配器
(公开成员函数)[编辑]
修改器
交换内容
(公开成员函数)[编辑]

[编辑]非成员函数

特化 std::swap 算法
(函数模板)[编辑]

[编辑]注解

功能特性测试标准功能特性
__cpp_lib_polymorphic202502L(C++26)std::polymorphic

[编辑]示例

[编辑]参阅

(C++26)
包含动态分配对象的具有类似值语义的包装器
(类模板)[编辑]
close