std::pmr::polymorphic_allocator<T>::new_object
提供: cppreference.com
<tbody>
</tbody>
template< class U, class CtorArgs... > [[nodiscard]] U* new_object( CtorArgs&&... ctor_args ); |
(C++20以上) | |
U 型のオブジェクトを確保および構築します。
以下と同等です。
U* p = allocate_object<U>();
try {
construct(p, std::forward<CtorArgs>(ctor_args)...);
} catch (...) {
deallocate_object(p);
throw;
}
return p;
引数
| ctor_args | - | U のコンストラクタに転送する引数
|
戻り値
確保および構築したオブジェクトを指すポインタ。
ノート
この関数は完全特殊化されたアロケータ std::polymorphic_allocator<> で使用するために導入されましたが、 std::polymorphic_allocator<T> を std::polymorphic_allocator<U> に rebind する必要や allocate、 construct および deallocate を個別に呼ぶ必要を回避するためのショートカットとして任意の特殊化でも便利かもしれません。
U は推定されないため、この関数を呼ぶときはテンプレート引数として提供されなければなりません。
例外
allocate_object または U のコンストラクタへの呼び出しによって投げられるあらゆる例外が投げられる可能性があります。
関連項目
(C++20) |
ベースとなるリソースからアラインされた生メモリを確保します (パブリックメンバ関数) |
(C++20) |
オブジェクトまたは配列に適した生メモリを確保します (パブリックメンバ関数) |
| メモリを確保します (パブリックメンバ関数) | |
[静的] |
アロケータを使用して未初期化記憶域を確保します ( std::allocator_traits<Alloc>のパブリック静的メンバ関数)
|
| メモリを確保します ( std::pmr::memory_resourceのパブリックメンバ関数)
|