名前空間
変種
操作

std::uses_allocator

提供: cppreference.com
< cpp‎ | memory
 
 
 
動的メモリ管理
未初期化記憶域
(C++17)
ガベージコレクションサポート
その他
(C++20)
(C++11)
(C++11)
C のライブラリ
低水準のメモリ管理
 
ヘッダ <memory> で定義
template< class T, class Alloc > struct uses_allocator;
(C++11およびそれ以降)

TAlloc から変換可能なまたは std::experimental::erased_type のエイリアスである (library fundamentals TS)メンバ型 allocator_type を持つ場合、メンバ定数 valuetrue です。 そうでなければ valuefalse です。

目次

[編集] ヘルパー変数テンプレート

template< class T, class Alloc >
inline constexpr bool uses_allocator_v = uses_allocator<T, Alloc>::value;
(C++17およびそれ以降)

std::integral_constant から継承

メンバ定数

value
[static]
T がアロケータ Alloc を使用するならば true、そうでなければ false
(パブリック静的メンバ定数)

メンバ関数

operator bool
オブジェクトを bool に変換します。 value を返します
(パブリックメンバ関数)
operator()
(C++14)
value を返します
(パブリックメンバ関数)

メンバ型

定義
value_type bool
type std::integral_constant<bool, value>

[編集] 特殊化

メンバ型 allocator_type を持たないけれども以下の2つの要件のひとつを満たす型に対する型特性 std::uses_allocator のカスタム特殊化が許容されます。

1) T が第1引数として std::allocator_arg_t を、第2引数として Alloc を取るコンストラクタを持つ。
2) T が最後の引数として Alloc を取るコンストラクタを持つ。

上記において、 AllocAllocator を満たす型または std::experimental::pmr::memory_resource* に変換可能なポインタ型 (library fundamentals TS)です。

以下の特殊化は標準ライブラリによってすでに提供されています。

std::uses_allocator 型特性の特殊化
(クラステンプレートの特殊化) [edit]
std::uses_allocator 型特性の特殊化
(関数テンプレート) [edit]
std::uses_allocator 型特性の特殊化
(関数テンプレート) [edit]
std::uses_allocator 型特性の特殊化
(関数テンプレート) [edit]
std::uses_allocator 型特性の特殊化
(クラステンプレートの特殊化) [edit]
std::uses_allocator 型特性の特殊化
(クラステンプレートの特殊化) [edit]
std::uses_allocator 型特性の特殊化
(クラステンプレートの特殊化) [edit]

[編集] ノート

この型特性は std::scoped_allocator_adaptorstd::tuplestd::variant および std::pmr::polymorphic_allocator によって使用されます。 また構築中のオブジェクトまたはメンバがそれ自身アロケータを使用する機能を持つ (例えばコンテナである) かどうかを決定するためにカスタムアロケータまたはラッパー型によっても使用されるかもしれません。 この場合、アロケータはそのコンストラクタに渡されるべきです。

[編集] 関連項目

アロケータ対応のコンストラクタを選択するために使用される std::allocator_arg_t 型のオブジェクト
(定数) [edit]
アロケータ対応のコンストラクタのオーバーロードを選択するために使用されるタグ型
(クラス) [edit]
多段コンテナのための多段アロケータを実装します
(クラステンプレート) [edit]