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
的公开成员函数)
|