Namespaces
Variants

std:: allocator_traits

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 Alloc >
struct allocator_traits ;
(C++11 以降)

allocator_traits クラステンプレートは、 Allocator s の様々なプロパティにアクセスする標準化された方法を提供します。 標準コンテナおよびその他の標準ライブラリコンポーネントは、このテンプレートを通じてアロケータにアクセスします。

任意のクラス型をアロケータとして使用することが可能です。ただし、ユーザー提供の std::allocator_traits 特殊化がすべての必要な機能を実装している必要があります。

(C++23まで)

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 が存在する場合、それを使用。存在しない場合、 SomeAllocator<T, Args> を使用(ただし、この Alloc SomeAllocator < U, Args > の形式である場合)。ここで Args は0個以上の 型引数
rebind_traits<T> std :: allocator_traits < rebind_alloc < T >>

メンバー関数

[static]
アロケータを使用して未初期化のストレージを割り当てる
(public static member function)
[static] (C++23)
アロケータを使用して要求されたサイズ以上のストレージを割り当てる
(public static member function)
[static]
アロケータを使用してストレージを解放する
(public static member function)
[static]
割り当てられたストレージ内にオブジェクトを構築する
(function template)
[static]
割り当てられたストレージに格納されたオブジェクトを破棄する
(function template)
[static]
アロケータがサポートする最大オブジェクトサイズを返す
(public static member function)
標準コンテナのコピー後に使用するアロケータを取得する
(public static member function)

欠陥報告

以下の動作変更の欠陥報告書は、以前に公開されたC++規格に対して遡及的に適用されました。

DR 適用対象 公開時の動作 正しい動作
LWG 2108 C++11 アロケータがステートレスであることを示す方法がなかった is_always_equal が提供された

関連項目

アロケータを使用するコンテナ; 関連する特性(例: propagate_on_container_swap )の使用方法
(名前付き要件)
デフォルトアロケータ
(クラステンプレート)
多階層コンテナのための多階層アロケータを実装する
(クラステンプレート)
ポインタ様の型に関する情報を提供する
(クラステンプレート)