Namespaces
Variants

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

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)
template < class U, class ... CtorArgs >
U * new_object ( CtorArgs && ... ctor_args ) ;
(C++20以降)

U のオブジェクトを割り当てて構築します。

alloc std:: 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 > へのリバインドや、 allocate construct deallocate の個別呼び出しを回避するショートカットとして、あらゆる特殊化で有用です。

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

例外

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

関連項目

基盤リソースからアライメントされた生メモリを割り当てる
(公開メンバ関数)
オブジェクトまたは配列に適した生メモリを割り当てる
(公開メンバ関数)
メモリを割り当てる
(公開メンバ関数)
[static]
アロケータを使用して未初期化ストレージを割り当てる
( std::allocator_traits<Alloc> の公開静的メンバ関数)
メモリを割り当てる
( std::pmr::memory_resource の公開メンバ関数)