std::scoped_allocator_adaptor<OuterAlloc,InnerAlloc...>::outermost, outermost-construct, outermost-destroy

来自cppreference.com
 
 
内存管理库
(仅用于阐述*)
分配器
未初始化内存算法
受约束的未初始化内存算法
内存资源
未初始化存储 (C++20 前)
(C++17 弃用)
(C++17 弃用)

垃圾收集器支持 (C++23 前)
(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 Alloc >
/* 未指定 */ /*outermost*/( Alloc&& alloc = *this );
(1) (仅用于阐述*)
template< class T, class... Args >
void /*outermost-construct*/( T* p, Args&&... args );
(2) (仅用于阐述*)
template< class T >
void /*outermost-destroy*/( T* p );
(3) (仅用于阐述*)

这些仅用于阐述的辅助函数用于成员函数 construct()destroy() 中。

1) 获取 alloc 的最外层分配器。
  • 如果表达式 alloc.outer_allocator() 合法,那么就会返回 outermost (alloc.outer_allocator())
  • 否则就会返回 alloc
2,3) 使用 *this 的最外层分配器构造或销毁对象。
给定类型 std::allocator_traits<std::remove_reference_t<decltype(outermost ())>>outermost_traits
2) 等价于 outermost_traits::construct(outermost (), p, std::forward<Args>(args)...);
3) 等价于 outermost_traits::destroy(outermost (), p);

[编辑] 缺陷报告

下列更改行为的缺陷报告追溯地应用于以前出版的 C++ 标准。

缺陷报告 应用于 出版时的行为 正确行为
LWG 3116 C++11 outermost 的递归条件是
alloc 拥有成员函数 outer_allocator()
将条件改为
表达式 alloc.outer_allocator() 合法”

[编辑] 参阅

[静态]
在已分配存储中构造对象
(函数模板) [编辑]
[静态]
析构储存于已分配存储中的对象
(函数模板) [编辑]