Namespaces
Variants

std::pmr::polymorphic_allocator<T>:: new_object

From cppreference.net
Memory management library
( exposition only* )
Allocators
Uninitialized memory algorithms
Constrained uninitialized memory algorithms
Memory resources
Uninitialized storage (until C++20)
( until C++20* )
( until C++20* )
( until C++20* )

Garbage collector support (until C++23)
(C++11) (until C++23)
(C++11) (until C++23)
(C++11) (until C++23)
(C++11) (until C++23)
(C++11) (until C++23)
(C++11) (until C++23)
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 的构造函数时抛出的任何异常。

参见

从底层资源分配对齐的原始内存
(公开成员函数)
分配适用于对象或数组的原始内存
(公开成员函数)
分配内存
(公开成员函数)
[static]
使用分配器分配未初始化的存储空间
( std::allocator_traits<Alloc> 的公开静态成员函数)
分配内存
( std::pmr::memory_resource 的公开成员函数)