std::allocator_traits<Alloc>::construct
From cppreference.com
| ヘッダ <memory> で定義 |
||
template< class T, class... Args > static void construct( Alloc& a, T* p, Args&&... args ); |
(C++11以降) (C++20 以降 constexpr) |
|
割り当てられた初期化されていないストレージ p の中に、a.construct(p, std::forward<Args>(args)...) を呼び出すことによって、型Tのオブジェクトを構築します。もし構築が可能であれば。
上記が不可能である場合(例:Allocにメンバー関数construct()がない場合)、以下を呼び出します。
|
::new (static_cast<void*>(p)) T(std::forward<Args>(args)...) |
(C++20まで) |
|
std::construct_at(p, std::forward<Args>(args)...) |
(C++20以降) |
目次 |
[編集] パラメータ
| a | - | 構築に使用するアロケータ |
| p | - | T オブジェクトが構築される未初期化ストレージへのポインタ。 |
| args... | - | a.construct() または 配置 new(C++20まで) std::construct_at()(C++20以降) に渡されるコンストラクタ引数 |
[編集] 戻り値
(なし)
[編集] ノート
この関数は、標準ライブラリコンテナが要素の挿入、コピー、または移動を行う際に使用されます。
この関数は配置 new への自動フォールバックを提供するため、メンバー関数construct()はC++11以降、オプションのAllocator要件です。
[編集] 関連項目
| メモリ割り当て関数 (関数) | |
| (C++20まで) |
割り当てられたストレージにオブジェクトを構築する ( std::allocator<T> のパブリックメンバ関数) |
| (C++20) |
与えられたアドレスにオブジェクトを作成します (関数テンプレート) |