Namespaces
Variants

std:: indirect

From ja.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)
一意のオブジェクト所有権セマンティクスを持つスマートポインタ
(クラステンプレート)