最終更新日時: 2025年07月09日 00時33分39秒 (JST)
Akira Takahashi が更新

履歴 編集

<flat_set>

# std::flat_set::推論補助(C++23)

    namespace std {
      // 説明用の型
      template <class InputIterator>
      using iter_val_t = typename iterator_traits<InputIterator>::value_type;
      template<class Allocator, class T>
      using alloc_rebind = typename allocator_traits<Allocator>::template rebind_alloc<T>;

      template<class KeyContainer, class Compare = less<typename KeyContainer::value_type>>
      flat_set(KeyContainer, Compare = Compare())
        -> flat_set<typename KeyContainer::value_type, Compare, KeyContainer>;              // (1)

      template<class KeyContainer, class Allocator>
      flat_set(KeyContainer, Allocator)
        -> flat_set<typename KeyContainer::value_type,
                    less<typename KeyContainer::value_type>, KeyContainer>;                 // (2)

      template<class KeyContainer, class Compare, class Allocator>
      flat_set(KeyContainer, Compare, Allocator)
        -> flat_set<typename KeyContainer::value_type, Compare, KeyContainer>;              // (3)

      template<class KeyContainer, class Compare = less<typename KeyContainer::value_type>>
      flat_set(sorted_unique_t, KeyContainer, Compare = Compare())
        -> flat_set<typename KeyContainer::value_type, Compare, KeyContainer>;              // (4)

      template<class KeyContainer, class Allocator>
      flat_set(sorted_unique_t, KeyContainer, Allocator)
        -> flat_set<typename KeyContainer::value_type,
                    less<typename KeyContainer::value_type>, KeyContainer>;                 // (5)

      template<class KeyContainer, class Compare, class Allocator>
      flat_set(sorted_unique_t, KeyContainer, Compare, Allocator)
        -> flat_set<typename KeyContainer::value_type, Compare, KeyContainer>;              // (6)

      template<class InputIterator, class Compare = less<iter_val_t<InputIterator>>>
      flat_set(InputIterator, InputIterator, Compare = Compare())
        -> flat_set<iter_val_t<InputIterator>, Compare>;                                    // (7)

      template<class InputIterator, class Compare = less<iter_val_t<InputIterator>>>
      flat_set(sorted_unique_t, InputIterator, InputIterator, Compare = Compare())
        -> flat_set<iter_val_t<InputIterator>, Compare>;                                    // (8)

      template<ranges::input_range R, class Compare = less<ranges::range_value_t<R>>,
               class Allocator = allocator<ranges::range_value_t<R>>>
      flat_set(from_range_t, R&&, Compare = Compare(), Allocator = Allocator())
        -> flat_set<ranges::range_value_t<R>, Compare,
                    vector<ranges::range_value_t<R>,
                    alloc_rebind<Allocator, ranges::range_value_t<R>>>>;                    // (9)

      template<ranges::input_range R, class Allocator>
      flat_set(from_range_t, R&&, Allocator)
        -> flat_set<ranges::range_value_t<R>, less<ranges::range_value_t<R>>,
                    vector<ranges::range_value_t<R>,
                    alloc_rebind<Allocator, ranges::range_value_t<R>>>>;                    // (10)

      template<class Key, class Compare = less<Key>>
      flat_set(initializer_list<Key>, Compare = Compare())
        -> flat_set<Key, Compare>;                                                          // (11)

      template<class Key, class Compare = less<Key>>
      flat_set(sorted_unique_t, initializer_list<Key>, Compare = Compare())
        -> flat_set<Key, Compare>;                                                          // (12)
    }

## 概要

`std::flat_set`クラステンプレートの型推論補助。

- (1) : キーのコンテナ、比較関数からの推論
- (2) : キーのコンテナ、アロケータからの推論
- (3) : キーのコンテナ、比較関数、アロケータからの推論
- (4) : キーのコンテナ、比較関数からの推論
- (5) : キーのコンテナ、アロケータからの推論
- (6) : キーのコンテナ、比較関数、アロケータからの推論
- (7) : イテレータ範囲、比較関数からの推論
- (8) : イテレータ範囲、比較関数からの推論
- (9) : Range、比較関数、アロケータからの推論
- (10) : Range、アロケータからの推論
- (11) : 初期化子リスト、比較関数からの推論
- (12) : 初期化子リスト、比較関数からの推論

## バージョン

### 言語

- C++23

### 処理系

- Clang: ??
- GCC: ??
- Visual C++: ??