名前空間
変種
操作

std::pmr::polymorphic_allocator<T>::new_object

From cppreference.com
 
 
メモリ管理ライブラリ
(説明用*)
未初期化メモリのアルゴリズム
(C++17)
(C++17)
(C++17)
制約付き未初期化
メモリアルゴリズム
Cライブラリ

アロケータ
メモリリソース
ガベージコレクションのサポート
(C++11)(C++23まで)
(C++11)(C++23まで)
(C++11)(C++23まで)
(C++11)(C++23まで)
(C++11)(C++23まで)
(C++11)(C++23まで)
未初期化ストレージ
(C++20まで*)
(C++20まで*)
明示的な生存期間管理
 
 
template< class U, class... CtorArgs >
U* new_object( CtorArgs&&... ctor_args );
(C++20以降)

Uのオブジェクトを確保し、構築します。

allocstd::pmr::polymorphic_allocator<T>である場合、

U* p = alloc.new_object<U>(std::forward<CtorArgs>(ctor_args)...);

これは以下のコードと同等です。

U* p = alloc.allocate_object<U>();
try
{
    alloc.construct(p, std::forward<CtorArgs>(ctor_args)...);
}
catch (...)
{
    alloc.deallocate_object(p);
    throw;
}

目次

[編集] パラメータ

ctor_args - Uのコンストラクタに転送される引数

[編集] 戻り値

確保され構築されたオブジェクトへのポインタ。

[編集] 注釈

この関数は、完全に特殊化されたアロケータstd::pmr::polymorphic_allocator<>との使用のために導入されましたが、std::pmr::polymorphic_allocator<T>からstd::pmr::polymorphic_allocator<U>へのリバインドを行い、allocateconstructdeallocateを個別に呼び出す必要を避けるためのショートカットとして、あらゆる特殊化で役立つ可能性があります。

Uは推論されないため、この関数を呼び出す際にテンプレート引数として指定する必要があります。

[編集] 例外

allocate_objectの呼び出し、またはUのコンストラクタによってスローされる可能性のある例外をスローする場合があります。

[編集] 関連項目

基盤となるリソースから生の整列されたメモリを割り当てる
(公開メンバ関数) [編集]
オブジェクトまたは配列に適した生メモリを割り当てる
(公開メンバ関数) [編集]
メモリを割り当てる
(公開メンバ関数) [編集]
[static]
アロケータを使用して未初期化のストレージを割り当てる
(std::allocator_traits<Alloc> の public static メンバー関数) [編集]
メモリを割り当てる
(std::pmr::memory_resource の public メンバー関数) [編集]
English 日本語 中文(简体) 中文(繁體)