最終更新日時(UTC): 2025年07月10日 01時26分30秒
Koichi Murase が更新

履歴 編集

function
<memory_resource>

# std::pmr::polymorphic_allocator::select_on_container_copy_construction(C++17)

    polymorphic_allocator select_on_container_copy_construction() const;

## 概要

`polymorphic_allocator`を利用しているクラスのコピー構築時に、新しい`polymorphic_allocator`オブジェクトを取得する。

## 戻り値

`return polymorphic_allocator();`

## 備考

すなわち、標準の`polymorphic_allocator`を利用しているクラス（主にコンテナ）のコピー構築時に、利用している`memory_resource`がコピーされる（伝播する）事は無い。

## 例

    #include <iostream>
    #include <memory_resource>

    int main()
    {
      auto mr = std::pmr::monotonic_buffer_resource{};
      std::pmr::polymorphic_allocator<int> alloc{ &mr };

      auto alloc2 = alloc.select_on_container_copy_construction();

      std::cout << std::boolalpha;
      std::cout << (alloc == alloc2) << std::endl;
    }

### 出力

    false

## バージョン

### 言語

- C++17

### 処理系

- Clang: ??
- GCC: 9.1 ✅
- Visual C++: 2017 update 6 ✅

## 関連項目

- `select_on_container_copy_construction`

## 参照

- P0220R1 Adopt Library Fundamentals V1 TS Components for C++17 (R1)
- P0337r0 | Delete operator= for polymorphic_allocator
- Working Draft, C++ Extensions for Library Fundamentals, Version 2