Namespaces
Variants

std:: indirect

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 T, class Allocator = std:: allocator < T > >
class indirect ;
(1) (C++26以降)
namespace pmr {

template < class T >
using indirect = std :: indirect < T, std:: pmr :: polymorphic_allocator < T >> ;

}
(2) (C++26以降)
1) std::indirect は、値のようなセマンティクスを持つ動的に割り当てられたオブジェクトを含むラッパーです。
2) std::pmr::indirect polymorphic allocator を使用するエイリアステンプレートです。

std::indirect オブジェクトは、所有するオブジェクトの ライフタイム を管理します。 std::indirect オブジェクトは、ムーブされた後にのみ所有オブジェクトを持たない状態になり、この場合 valueless となります。

std::indirect<T, Allocator> 型のすべてのオブジェクトは、 Allocator 型のオブジェクトを使用して、 必要に応じて所有するオブジェクトのストレージを割り当ておよび解放します。

プログラムが std::indirect の明示的特殊化または部分特殊化を宣言する場合、動作は未定義です。

目次

テンプレートパラメータ

T - 所有有するオブジェクトの型
Allocator - 関連付けられたアロケータの型
型要件
-
T 不完全型 であってもよい。
-
T が以下の型のいずれかである場合、プログラムは不適格となる:
-
Allocator Allocator の要件を満たさない場合、プログラムは不適格となる。
-
std:: allocator_traits < Allocator > :: value_type T と同じ型でない場合、プログラムは不適格となる。

ネストされた型

定義
value_type T
allocator_type Allocator
pointer typename std:: allocator_traits < Allocator > :: pointer
const_pointer typename std:: allocator_traits < Allocator > :: const_pointer

データメンバ

メンバー 説明
pointer p 所有する値へのポインタ
( 説明専用メンバーオブジェクト* )
Allocator alloc 関連付けられたアロケータ
( 説明専用メンバーオブジェクト* )

メンバー関数

indirect オブジェクトを構築する
(public member function)
所有する値がある場合、それを破棄する
(public member function)
内容を代入する
(public member function)
Observers
所有する値にアクセスする
(public member function)
indirect が値を持たないかどうかをチェックする
(public member function)
関連付けられたアロケータを返す
(public member function)
Modifiers
内容を交換する
(public member function)

非メンバー関数

(C++26) (C++26)
indirect オブジェクトを比較する
(関数テンプレート)
std::swap アルゴリズムを特殊化する
(関数テンプレート)

ヘルパークラス

std::indirect のハッシュサポート
(クラステンプレートの特殊化)

推論ガイド

注記

機能テスト マクロ 標準 機能
__cpp_lib_indirect 202502L (C++26) std::indirect

関連項目

値のようなセマンティクスを持つ動的に割り当てられたオブジェクトを含むポリモーフィックなラッパー
(クラステンプレート)
(C++11)
一意のオブジェクト所有権セマンティクスを持つスマートポインタ
(クラステンプレート)