• Class / Function / Type

      std::
    • Header file

      <>
    • Other / All

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

    履歴 編集

    function
    <memory_resource>

    std::pmr::polymorphic_allocator::コンストラクタ

    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

    処理系

    参照