最終更新日時(UTC):
が更新

履歴 編集

function
<memory_resource>

std::pmr::polymorphic_allocator::コンストラクタ(C++17)

polymorphic_allocator() noexcept;           //(1)

polymorphic_allocator(memory_resource* r);  //(2)

polymorphic_allocator(const polymorphic_allocator& other) = default;    //(3)

template <class U>
polymorphic_allocator(const polymorphic_allocator<U>& other) noexcept;  //(4)

概要

  • (1) : デフォルトコンストラクタ
  • (2) : memory_resourceオブジェクトのポインタを受けて構築
  • (3) : コピーコンストラクタ
  • (4) : value_typeに変換可能なUpolymorphic_allocatorからのコピー構築

要件

  • (2) : rがnullでないこと

引数

  • r -- 任意のmemory_resourceへのポインタ
  • other -- コピーする他のpolymorphic_allocatorオブジェクト

効果

  • (1) : get_default_resource()からデフォルトのmemory_resourceを取得して構築
  • (2) : rmemory_resourceとして構築
  • (3)(4) : other.resource()からmemory_resourceを取得して構築

例外

  • (1)(4) : 投げない

備考

どのコンストラクタからの初期化においても、取得するmemory_resourceの所有権を保持しない。

#include <memory_resource>

int main() {
  //(1) デフォルト構築
  {
    std::pmr::polymorphic_allocator<int> alloc{};
  }

  //(2) memory_resourceを受けて構築
  {
    auto* rs = std::pmr::null_memory_resource();
    std::pmr::polymorphic_allocator<int> alloc{rs};
  }

  //(3) 同じ型のpolymorphic_allocatorからコピー構築
  {
    std::pmr::polymorphic_allocator<int> alloc1{};
    std::pmr::polymorphic_allocator<int> alloc{alloc1};
  }

  //(4) 変換可能な型のpolymorphic_allocatorからコピー構築
  {
    std::pmr::polymorphic_allocator<short> alloc1{};
    std::pmr::polymorphic_allocator<int> alloc{alloc1};
  }
}

出力

バージョン

言語

  • C++17

処理系

参照