Namespaces
Variants

std:: polymorphic

From cppreference.net
Memory management library
( exposition only* )
Allocators
Uninitialized memory algorithms
Constrained uninitialized memory algorithms
Memory resources
Uninitialized storage (until C++20)
( until C++20* )
( until C++20* )
( until C++20* )

Garbage collector support (until C++23)
(C++11) (until C++23)
(C++11) (until C++23)
(C++11) (until C++23)
(C++11) (until C++23)
(C++11) (until C++23)
(C++11) (until 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<T, Allocator> 类型的对象都会使用一个 Allocator 类型的对象,根据需要为所拥有的对象分配和释放存储空间。

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

目录

模板参数

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

嵌套类型

类型 定义
value_type T
allocator_type Allocator
pointer typename std:: allocator_traits < Allocator > :: pointer
const_pointer typename std:: allocator_traits < Allocator > :: const_pointer

数据成员

成员 描述
Allocator alloc 关联的分配器
( 仅用于说明的成员对象* )

成员函数

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

非成员函数

特化 std::swap 算法
(函数模板)

注释

功能测试 标准 功能
__cpp_lib_polymorphic 202502L (C++26) std::polymorphic

示例

参见

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