std:: polymorphic
|
定义于头文件
<memory>
|
||
|
template
<
class
T,
class
Allocator
=
std::
allocator
<
T
>
>
class polymorphic ; |
(1) | (C++26 起) |
|
namespace
pmr
{
template
<
class
T
>
|
(2) | (C++26 起) |
std::polymorphic
是一个包装器,包含具有值语义的、可能不同类型的动态分配对象。
一个
std::polymorphic
对象管理其所拥有对象的
生命周期
。被拥有对象的类型为
T
或任何(公开且明确)派生自
T
的类型。只有当
std::polymorphic
对象被移出后,它才可能不拥有任何对象,此时该对象处于
无值状态
。
每个
std::polymorphic<T, Allocator>
类型的对象都会使用一个
Allocator
类型的对象,根据需要为所拥有的对象分配和释放存储空间。
如果程序声明了
std::polymorphic
的显式或部分特化,则行为是未定义的。
目录 |
模板参数
| T | - | 所拥有对象的类型 |
| Allocator | - | 关联分配器的类型 |
| 类型要求 | ||
-
T
可以是
不完整类型
。
|
||
-
T
是以下类型之一,则程序非良构:
|
||
-
Allocator
不满足
分配器
的要求,则程序非良构。
|
||
-
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
是否为空值状态
(公开成员函数) |
|
|
返回关联的分配器
(公开成员函数) |
|
修改器 |
|
|
交换内容
(公开成员函数) |
|
非成员函数
|
(C++26)
|
特化
std::swap
算法
(函数模板) |
注释
| 功能测试 宏 | 值 | 标准 | 功能 |
|---|---|---|---|
__cpp_lib_polymorphic
|
202502L
|
(C++26) |
std::polymorphic
|
示例
|
本节内容不完整
原因:缺少示例 |
参见
|
(C++26)
|
包含具有类值语义的动态分配对象的包装器
(类模板) |