std::scoped_allocator_adaptor<OuterAlloc,InnerAlloc...>::outermost, outermost-construct, outermost-destroy
From cppreference.com
< cpp | memory | scoped allocator adaptor
template< class Alloc > /* unspecified */ /*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 の最も外側のallocatorを取得します。
- 式 alloc.outer_allocator() が有効な場合、
outermost(alloc.outer_allocator()) を返します。 - それ以外の場合は、alloc を返します。
2,3) *this の最も外側のallocatorを使用して、オブジェクトを構築または破棄します。
outermost_traits として std::allocator_traits<std::remove_reference_t<decltype(outermost ())>> を与えられた場合2) outermost_traits::construct(
outermost (), p, std::forward<Args>(args)...); と同等です。3) outermost_traits::destroy(
outermost (), p); と同等です。[編集] 不具合報告
以下の動作変更を伴う欠陥報告が、以前に公開されたC++標準に遡って適用されました。
| DR | 適用対象 | 公開された動作 | 正しい動作 |
|---|---|---|---|
| LWG 3116 | C++11 | outermost の再帰条件は「allocはメンバ関数 outer_allocator() を持つ」でしたが、 |
「式 alloc.outer_allocator() が有効」に変更されました。 |
[編集] 関連項目
| [static] |
割り当てられたストレージにオブジェクトを構築する (関数テンプレート) |
| [static] |
割り当てられたストレージに格納されたオブジェクトを破棄する (関数テンプレート) |