std::pmr::polymorphic_allocator<T>:: new_object
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Member functions | ||||
|
(
C++20/26*
)
|
||||
|
polymorphic_allocator::new_object
(C++20)
|
||||
| Non-member functions | ||||
|
(until C++20)
|
|
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
のコンストラクタによってスローされるあらゆる例外をスローする可能性があります。
関連項目
|
(C++20)
|
基盤リソースからアライメントされた生メモリを割り当てる
(公開メンバ関数) |
|
(C++20)
|
オブジェクトまたは配列に適した生メモリを割り当てる
(公開メンバ関数) |
|
メモリを割り当てる
(公開メンバ関数) |
|
|
[static]
|
アロケータを使用して未初期化ストレージを割り当てる
(
std::allocator_traits<Alloc>
の公開静的メンバ関数)
|
|
メモリを割り当てる
(
std::pmr::memory_resource
の公開メンバ関数)
|