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

来自cppreference.com
 
 
动态内存管理
未初始化内存算法
受约束的未初始化内存算法
分配器
垃圾收集器支持
(C++11)(C++23 前)
(C++11)(C++23 前)
(C++11)(C++23 前)
(C++11)(C++23 前)
(C++11)(C++23 前)
(C++11)(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> 和必须单独调用 allocateconstructdeallocate 的快捷方式。

因为不推导 U,调用此函数时必须提供它为模板实参。

异常

可能抛出任何调用 allocate_objectU 的构造函数所抛的异常。

参阅

从底层资源分配未处理的对齐内存
(公开成员函数)
分配适合单个对象或数组的未处理内存
(公开成员函数)
分配内存
(公开成员函数)
[静态]
用分配器分配未初始化的存储
(std::allocator_traits<Alloc> 的公开静态成员函数)
分配内存
(std::pmr::memory_resource 的公开成员函数)