std::pmr::polymorphic_allocator<T>::new_object
来自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) |
分配适合单个对象或数组的未处理内存 (公开成员函数) |
分配内存 (公开成员函数) | |
[静态] |
用分配器分配未初始化的存储 ( std::allocator_traits<Alloc> 的公开静态成员函数) |
分配内存 ( std::pmr::memory_resource 的公开成员函数) |