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 は、 polymorphic allocator を使用するエイリアステンプレートです。

std::polymorphic オブジェクトは、所有するオブジェクトの 生存期間 を管理します。所有されるオブジェクトの型は T または T から(公開かつ明確に)派生した任意の型です。 std::polymorphic オブジェクトは、ムーブされた後にのみ所有オブジェクトを持たない状態になり、この場合 無効状態 となります。

std::polymorphic<T, Allocator> 型のすべてのオブジェクトは、必要に応じて所有するオブジェクトのストレージを割り当ておよび解放するために、 Allocator 型のオブジェクトを使用します。

プログラムが std::polymorphic の明示的特殊化または部分特殊化を宣言する場合、動作は未定義です。

目次

テンプレートパラメータ

T - 所有されるオブジェクトの型
Allocator - 関連付けられたアロケータの型
型要件
-
T 不完全型 であってもよい。
-
T が以下の型のいずれかである場合、プログラムは不適格となる:
-
Allocator 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 オブジェクトを構築する
(public member function)
所有する値がある場合は破棄する
(public member function)
内容を代入する
(public member function)
Observers
所有する値にアクセスする
(public member function)
polymorphic が値を持たないかどうかをチェックする
(public member function)
関連付けられたアロケータを返す
(public member function)
Modifiers
内容を交換する
(public member function)

非メンバー関数

std::swap アルゴリズムを特殊化
(関数テンプレート)

注記

機能テスト マクロ 標準 機能
__cpp_lib_polymorphic 202502L (C++26) std::polymorphic

関連項目

(C++26)
値のようなセマンティクスを持つ動的に割り当てられたオブジェクトを含むラッパー
(クラステンプレート)