std::allocator<T>::construct
ja.cppreference.net より
| ヘッダ <memory>
|
||
void construct( pointer p, const_reference val );
|
(1) | (C++11 まで) |
template< class U, class... Args >
void construct( U* p, Args&&... args );
|
(2) | (C++11 以降) (C++17 で非推奨) (C++20 で削除) |
型 T のオブジェクトを、グローバル配置 new を使用して、p が指す割り当て済み未初期化ストレージ内に構築します。
1)
::new((void*)p) T(val) を呼び出します。2)
::new((void*)p) U(std::forward<Args>(args)...) を呼び出します。パラメータ
| p | - | 割り当てられた未初期化ストレージへのポインタ |
| val | - | コピーコンストラクタの引数として使用する値 |
| args... | - | 使用するコンストラクタ引数 |
欠陥報告
以下の動作変更の欠陥報告書は、以前に公開されたC++規格に対して遡及的に適用されました。
| DR | 適用対象 | 公開時の動作 | 正しい動作 |
|---|---|---|---|
| LWG 402 | C++98 | T :: operator new が存在する場合、プログラムは不適格となる可能性がある | グローバルな置換newを使用する |
関連項目
|
[static]
|
確保されたストレージ内でオブジェクトを構築する
(関数テンプレート) |
|
(C++20)
|
指定されたアドレスにオブジェクトを作成する
(関数テンプレート) |
|
確保関数
(関数) |