std::experimental::pmr::resource_adaptor, std::pmr::experimental::resource_adaptor
| ヘッダー <experimental/memory_resource> で定義 |
||
| template< class Alloc > using resource_adaptor = /*resource-adaptor-imp*/< |
(Library Fundamentals TS) | |
| template< class Alloc > class /*resource-adaptor-imp*/ : public memory_resource; // 説明用 |
(Library Fundamentals TS) | |
エイリアステンプレート resource_adaptor は、アロケータ型 Alloc を memory_resource インターフェースに適合させます。このアロケータは、実際に適合される前 (resource-adaptor-imp クラステンプレートを使用) に char 値型に再束縛されます。これにより、同じアロケータテンプレートの特殊化を適合させた場合、元々インスタンス化された値型に関わらず、常に同じ型が生成されます。
|
|
(Library Fundamentals TS) (Library Fundamentals TS v3 まで) |
|
|
(ライブラリ基本TS v3) |
resource-adaptor-imp は、そのメンバが以下で説明されるクラステンプレートです。resource-adaptor-imp という名前は説明のみを目的としたものであり、規定ではありません。
Allocator (アロケータ) の要件を満たすことに加えて、Alloc は以下の要件を追加で満たさなければなりません。
- std::allocator_traits<Alloc>::pointer は Alloc::value_type* と同一でなければなりません。
- std::allocator_traits<Alloc>::const_pointer は Alloc::value_type const* と同一でなければなりません。
- std::allocator_traits<Alloc>::void_pointer は void* と同一でなければなりません。
- std::allocator_traits<Alloc>::const_const_pointer は void const* と同一でなければなりません。
[編集] resource-adaptor-imp のメンバ型
| メンバ型 | 定義 |
allocator_type
|
Alloc
|
[編集] resource-adaptor-imp のメンバ関数
resource-adaptor-imp::resource-adaptor-imp
| /*resource-adaptor-imp*/() = default; |
(1) | (Library Fundamentals TS) |
| /*resource-adaptor-imp*/(const /*resource-adaptor-imp*/& other) = default; |
(2) | (Library Fundamentals TS) |
| /*resource-adaptor-imp*/(/*resource-adaptor-imp*/&& other) = default; |
(3) | (Library Fundamentals TS) |
| explicit /*resource-adaptor-imp*/(const Alloc& a2); |
(4) | (Library Fundamentals TS) |
| explicit /*resource-adaptor-imp*/(Alloc&& a2); |
(5) | (Library Fundamentals TS) |
other がラップしているアロケータから、ラップされたアロケータをコピー構築します。other がラップしているアロケータから、ラップされたアロケータをムーブ構築します。a2 でラップされたアロケータを初期化します。パラメータ
| その他 | - | コピーまたはムーブ元の別の resource-adaptor-imp オブジェクト |
| a2 | - | コピーまたはムーブ元の別の Alloc オブジェクト |
resource-adaptor-imp::get_allocator
| allocator_type get_allocator() const; |
(Library Fundamentals TS) | |
ラップされたアロケータのコピーを返します。
resource-adaptor-imp::operator=
| /*resource-adaptor-imp*/& operator=(const /*resource-adaptor-imp*/& other) = default; |
(Library Fundamentals TS) | |
デフォルト化されたコピー代入演算子。other のアロケータから、ラップされたアロケータをコピー代入します。
resource-adaptor-imp::do_allocate
| protected: virtual void* do_allocate(std::size_t bytes, std::size_t alignment); |
(Library Fundamentals TS) | |
ラップされたアロケータの allocate メンバ関数を使用してメモリを確保します。
resource-adaptor-imp::do_deallocate
| protected: virtual void do_deallocate(void *p, std::size_t bytes, std::size_t alignment); |
(Library Fundamentals TS) | |
ラップされたアロケータの deallocate メンバ関数を使用して、p が指すストレージを解放します。
p は、ラップされたアロケータと等価比較できるアロケータの allocate メンバ関数を使用して確保されたものでなければならず、その後解放されていてはなりません。
resource-adaptor-imp::do_is_equal
| protected: virtual bool do_is_equal(const memory_resource& other) const noexcept; |
(Library Fundamentals TS) | |
p を dynamic_cast<const /*resource-adaptor-imp*/*>(&other) とします。p がヌルポインタ値の場合、false を返します。それ以外の場合、*p と *this がラップするアロケータを operator== を使用して比較した結果を返します。