std::pmr::polymorphic_allocator<T>::new_object
From cppreference.com
< cpp | memory | polymorphic allocator
| 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> の public static メンバー関数) |
| メモリを割り当てる ( std::pmr::memory_resource の public メンバー関数) |