std::allocator_traits
From cppreference.com
| ヘッダ <memory> で定義 |
||
| template< class Alloc > struct allocator_traits; |
(C++11以降) | |
allocator_traitsクラステンプレートは、アロケータの様々なプロパティにアクセスするための標準化された方法を提供します。標準コンテナやその他の標準ライブラリコンポーネントは、このテンプレートを介してアロケータにアクセスします。これにより、ユーザーが提供するstd::allocator_traitsの特殊化が必要なすべての機能を実装している限り、任意のクラス型をアロケータとして使用できます。
|
|
(C++23から) |
デフォルトの非特殊化されたstd::allocator_traitsには、以下のメンバーが含まれます
目次 |
[編集] メンバ型
| 型 | 定義 |
allocator_type
|
Alloc
|
value_type
|
Alloc::value_type
|
pointer
|
Alloc::pointerが存在する場合、そうでない場合はvalue_type* |
const_pointer
|
Alloc::const_pointerが存在する場合、そうでない場合はstd::pointer_traits<pointer>::rebind<const value_type> |
void_pointer
|
Alloc::void_pointerが存在する場合、そうでない場合はstd::pointer_traits<pointer>::rebind<void> |
const_void_pointer
|
Alloc::const_void_pointerが存在する場合、そうでない場合はstd::pointer_traits<pointer>::rebind<const void> |
difference_type
|
Alloc::difference_typeが存在する場合、そうでない場合はstd::pointer_traits<pointer>::difference_type |
size_type
|
Alloc::size_typeが存在する場合、そうでない場合はstd::make_unsigned<difference_type>::type |
propagate_on_container_copy_assignment
|
Alloc::propagate_on_container_copy_assignmentが存在する場合、そうでない場合はstd::false_type |
propagate_on_container_move_assignment
|
Alloc::propagate_on_container_move_assignmentが存在する場合、そうでない場合はstd::false_type |
propagate_on_container_swap
|
Alloc::propagate_on_container_swapが存在する場合、そうでない場合はstd::false_type |
is_always_equal
|
Alloc::is_always_equalが存在する場合、そうでない場合はstd::is_empty<Alloc>::type |
[編集] メンバーエイリアステンプレート
| 型 | 定義 |
rebind_alloc<T>
|
Alloc::rebind<T>::otherが存在する場合、そうでない場合は、このAllocがSomeAllocator<U, Args>の形式である場合、SomeAllocator<T, Args>。Argsはゼロ個以上の型引数 |
rebind_traits<T>
|
std::allocator_traits<rebind_alloc<T>> |
[編集] メンバ関数
| [static] |
アロケータを使用して未初期化のストレージを割り当てる (public static メンバー関数) |
| [static] (C++23) |
アロケーターを介して、要求されたサイズ以上のストレージを割り当てます。 (public static メンバー関数) |
| [static] |
アロケータを使用してストレージを解放する (public static メンバー関数) |
| [static] |
割り当てられたストレージにオブジェクトを構築する (関数テンプレート) |
| [static] |
割り当てられたストレージに格納されたオブジェクトを破棄する (関数テンプレート) |
| [static] |
アロケータがサポートするオブジェクトの最大サイズを返す (public static メンバー関数) |
| 標準コンテナのコピー後に使用するアロケータを取得する (public static メンバー関数) |
[編集] 欠陥報告
以下の動作変更を伴う欠陥報告が、以前に公開されたC++標準に遡って適用されました。
| DR | 適用対象 | 公開された動作 | 正しい動作 |
|---|---|---|---|
| LWG 2108 | C++11 | アロケータがステートレスであることを示す方法がなかった | is_always_equalが提供された |
[編集] 関連項目
| (C++11) |
アロケータを使用するコンテナ。関連する特性(例:propagate_on_container_swap)の使用方法(名前付き要件) |
| デフォルトアロケータ (クラステンプレート) | |
| (C++11) |
多階層コンテナのための多階層アロケータを実装します (クラステンプレート) |
| (C++11) |
ポインタライクな型に関する情報を提供します (クラステンプレート) |