名前空間
変種
操作

std::experimental::pmr::resource_adaptor, std::pmr::experimental::resource_adaptor

From cppreference.com
 
 
 
 
 
ヘッダー <experimental/memory_resource> で定義
template< class Alloc >

using resource_adaptor = /*resource-adaptor-imp*/<
                             typename std::allocator_traits<Alloc>::

                             template rebind_alloc<char>>;
(Library Fundamentals TS)
template< class Alloc >
class /*resource-adaptor-imp*/ : public memory_resource; // 説明用
(Library Fundamentals TS)

エイリアステンプレート resource_adaptor は、アロケータ型 Allocmemory_resource インターフェースに適合させます。このアロケータは、実際に適合される前 (resource-adaptor-imp クラステンプレートを使用) に char 値型に再束縛されます。これにより、同じアロケータテンプレートの特殊化を適合させた場合、元々インスタンス化された値型に関わらず、常に同じ型が生成されます。

resource_adaptor は名前空間 std::experimental::pmr で定義されており、このページにおける基底型 memory_resourcestd::experimental::pmr::memory_resource です。

(Library Fundamentals TS)
(Library Fundamentals TS v3 まで)

resource_adaptor は名前空間 std::pmr::experimental で定義されており、このページにおける基底型 memory_resourcestd::pmr::memory_resource です。

(ライブラリ基本TS v3)

resource-adaptor-imp は、そのメンバが以下で説明されるクラステンプレートです。resource-adaptor-imp という名前は説明のみを目的としたものであり、規定ではありません。

Allocator (アロケータ) の要件を満たすことに加えて、Alloc は以下の要件を追加で満たさなければなりません。

  • std::allocator_traits<Alloc>::pointerAlloc::value_type* と同一でなければなりません。
  • std::allocator_traits<Alloc>::const_pointerAlloc::value_type const* と同一でなければなりません。
  • std::allocator_traits<Alloc>::void_pointervoid* と同一でなければなりません。
  • std::allocator_traits<Alloc>::const_const_pointervoid 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)
1) デフォルトコンストラクタ。ラップされたアロケータをデフォルト構築します。
2) コピーコンストラクタ。other がラップしているアロケータから、ラップされたアロケータをコピー構築します。
3) ムーブコンストラクタ。other がラップしているアロケータから、ラップされたアロケータをムーブ構築します。
4) a2 でラップされたアロケータを初期化します。
5) std::move(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)

pdynamic_cast<const /*resource-adaptor-imp*/*>(&other) とします。p がヌルポインタ値の場合、false を返します。それ以外の場合、*p*this がラップするアロケータを operator== を使用して比較した結果を返します。

English 日本語 中文(简体) 中文(繁體)