std::pmr::polymorphic_allocator
提供: cppreference.com
ヘッダ <memory_resource> で定義
|
||
template< class T > class polymorphic_allocator; |
(C++17以上) (C++20未満) |
|
template< class T = std::byte > class polymorphic_allocator; |
(C++20以上) | |
クラステンプレート std::pmr::polymorphic_allocator
は確保動作が構築時に指定されたメモリリソースに依存する Allocator です。 そのため、 polymorphic_allocator
の異なるインスタンスはまったく異なる確保動作を行うことができます。 この実行時の多相性により polymorphic_allocator
を用いるオブジェクトは同一の静的なアロケータ型であるにもかかわらず実行時に異なるアロケータ型を使用しているかのように振る舞うことができます。
polymorphic_allocator
のすべての特殊化はアロケータの完全性の要件を満たします。
目次 |
[編集] メンバ型
メンバ型 | 定義 |
value_type
|
T
|
[編集] メンバ関数
polymorphic_allocator を構築します (パブリックメンバ関数) | |
デストラクタ (暗黙に宣言) |
暗黙に宣言されたデストラクタ (パブリックメンバ関数) |
operator= [削除] |
コピー代入演算子は削除されています (パブリックメンバ関数) |
パブリックメンバ関数 | |
メモリを確保します (パブリックメンバ関数) | |
メモリを解放します (パブリックメンバ関数) | |
確保された記憶域にオブジェクトを構築します (パブリックメンバ関数) | |
確保された記憶域内のオブジェクトを破棄します (パブリックメンバ関数) | |
(C++20) |
ベースとなるリソースからアラインされた生メモリを確保します (パブリックメンバ関数) |
(C++20) |
allocate_bytes から取得した生メモリを解放します (パブリックメンバ関数) |
(C++20) |
オブジェクトまたは配列に適した生メモリを確保します (パブリックメンバ関数) |
(C++20) |
allocate_object によって取得した生メモリを解放します (パブリックメンバ関数) |
(C++20) |
オブジェクトを確保および構築します (パブリックメンバ関数) |
(C++20) |
オブジェクトを破棄および解放します (パブリックメンバ関数) |
コンテナのコピーコンストラクタによって使用するための新しい polymorphic_allocator を作成します (パブリックメンバ関数) | |
ベースとなるメモリリソースを指すポインタを返します (パブリックメンバ関数) |
[編集] 非メンバ関数
(C++20で削除) |
2つの polymorphic_allocator を比較します (関数) |
[編集] ノート
polymorphic_allocator
はコンテナのコピー代入、ムーブ代入、スワップの際に伝播しません。 結果として、 polymorphic_allocator
を使用するコンテナのムーブ代入は例外を投げる可能性があり、アロケータが等しくない polymorphic_allocator
を使用する2つのコンテナのスワップは未定義動作になります。
[編集] 関連項目
(C++17) |
メモリリソースをカプセル化するクラスへの抽象インタフェース (クラス) |