std::pmr:: polymorphic_allocator
|
定義済みヘッダー
<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
要件を満たすものであり、構築時に使用する
std::pmr::memory_resource
に応じて異なるアロケーション動作を示します。
memory_resource
は実行時ポリモーフィズムを使用してメモリ割り当てを管理するため、
polymorphic_allocator
を静的アロケータ型として持つ異なるコンテナインスタンスは相互運用可能でありながら、あたかも異なるアロケータ型を持っているかのように振る舞うことができます。
polymorphic_allocator
のすべての特殊化は、
アロケータ完全性要件
を満たします。
polymorphic_allocator::construct
メンバ関数は
アロケータ使用構築
を実行するため、
polymorphic_allocator
を使用するコンテナの要素は、自身のアロケーションに同じアロケータを使用します。例えば、
std::
pmr
::
vector
<
std::
pmr
::
string
>
は、
vector
のストレージと各
string
のストレージに同じ
memory_resource
を使用します。
非多相アロケータの場合、同様の伝播は std::scoped_allocator_adaptor を使用して実現できます。
目次 |
メンバー型
| メンバー型 | 定義 |
value_type
|
T
|
メンバー関数
|
polymorphic_allocator を構築する
(public member function) |
|
|
(destructor)
(implicitly declared)
|
暗黙的に宣言されたデストラクタ
(public member function) |
|
operator=
[deleted]
|
コピー代入演算子は削除されている
(public member function) |
公開メンバ関数 |
|
|
メモリを割り当てる
(public member function) |
|
|
メモリを解放する
(public member function) |
|
|
割り当てられたストレージ内でオブジェクトを構築する
(public member function) |
|
|
(C++20で非推奨)
(C++26で非推奨解除)
|
割り当てられたストレージ内のオブジェクトを破棄する
(public member function) |
|
(C++20)
|
基盤リソースからアライメントされた生メモリを割り当てる
(public member function) |
|
(C++20)
|
allocate_bytes
から取得した生メモリを解放する
(public member function) |
|
(C++20)
|
オブジェクトまたは配列に適した生メモリを割り当てる
(public member function) |
|
(C++20)
|
allocate_object
で取得した生メモリを解放する
(public member function) |
|
(C++20)
|
オブジェクトを割り当てて構築する
(public member function) |
|
(C++20)
|
オブジェクトを破棄して解放する
(public member function) |
コンテナのコピーコンストラクタで使用するための新しい
polymorphic_allocator
を作成する
(public member function) |
|
|
基盤メモリリソースへのポインタを返す
(public member function) |
|
非メンバー関数
|
(C++20で削除)
|
二つの
polymorphic_allocator
を比較
(関数) |
注記
polymorphic_allocator
は、コンテナのコピー代入、ムーブ代入、またはswapにおいて伝播しません。その結果、
polymorphic_allocator
を使用するコンテナのムーブ代入は例外を送出する可能性があり、等価でないアロケータを持つ2つの
polymorphic_allocator
を使用するコンテナのswapは未定義動作を引き起こします。
| 機能テスト マクロ | 値 | 標準 | 機能 |
|---|---|---|---|
__cpp_lib_polymorphic_allocator
|
201902L
|
(C++20) |
std::pmr::polymorphic_allocator<>
をボキャブラリ型として
|
関連項目
|
(C++17)
|
メモリリソースをカプセル化するクラスのための抽象インターフェース
(クラス) |