名前空間
変種
操作

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

From cppreference.com
 
 
メモリ管理ライブラリ
(説明用*)
未初期化メモリのアルゴリズム
(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++20まで*)
明示的な生存期間管理
 
 
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]
割り当てられたストレージに格納されたオブジェクトを破棄する
(関数テンプレート) [編集]
English 日本語 中文(简体) 中文(繁體)