命名空间
变体
操作

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

来自 cppreference.cn
 
 
内存管理库
(仅为解释目的*)
未初始化内存算法
(C++17)
(C++17)
(C++17)
受约束的未初始化
内存算法
C 库

分配器
内存资源
垃圾回收支持
(C++11)(直到 C++23)
(C++11)(直到 C++23)
(C++11)(直到 C++23)
(C++11)(直到 C++23)
(C++11)(直到 C++23)
(C++11)(直到 C++23)
未初始化存储
(直到 C++20*,在 C++17 中弃用)
(直到 C++20*,在 C++17 中弃用)
(直到 C++20*,在 C++17 中弃用)
显式生命周期管理
 
 
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;
}

目录

[edit] 参数

ctor_args - 要转发给 U 的构造函数的参数

[edit] 返回值

指向已分配和构造的对象的指针。

[edit] 注解

此函数被引入用于完全特化的分配器 std::pmr::polymorphic_allocator<>,但它在任何特化中都可能很有用,作为避免必须从 std::pmr::polymorphic_allocator<T> 重新绑定到 std::pmr::polymorphic_allocator<U> 的快捷方式,以及不必单独调用 allocateconstructdeallocate

由于 U 不是推导出来的,因此在调用此函数时必须作为模板参数提供。

[edit] 异常

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

[edit] 参见

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