最終更新日時: 2026年06月06日 22時00分57秒 (JST)
yoh が更新

履歴 編集

customization point object
<execution>

# std::get_allocator(C++26)

    namespace std {
      struct get_allocator_t { unspecified };
      inline constexpr get_allocator_t get_allocator{};
    }

## 概要

`get_allocator`は、クエリ可能オブジェクトからアロケータを取得するクエリオブジェクトである。

コア定数式`forwarding_query(get_allocator)`は`true`値を返す。

## 効果

呼び出し式`get_allocator(env)`は、`MANDATE-NOTHROW(AS-CONST(env).query(get_allocator))`と等価である。

上記の式が適格なとき、その型は説明専用コンセプト`simple-allocator`を満たすこと。

    template<class Alloc>
    concept simple-allocator =
      requires(Alloc alloc, size_t n) {
        { *alloc.allocate(n) } -> same_as<typename Alloc::value_type&>;
        { alloc.deallocate(alloc.allocate(n), n) };
      } &&
      copy_constructible<Alloc> &&
      equality_comparable<Alloc>;

## 例外

投げない

## カスタマイゼーションポイント

const修飾クエリ可能オブジェクト `cenv`に対して式`cenv.query(get_allocator)`が呼び出される。 このとき、`noexcept(cenv.query(get_allocator)) == true`であること。

## 例

    #include <concepts>
    #include <memory>
    #include <execution>
    namespace ex = std::execution;

    int main()
    {
      auto env = ex::prop(std::get_allocator, std::allocator<int>{});

      auto alloc = std::get_allocator(env);
      static_assert(std::same_as<decltype(alloc), std::allocator<int>>);
    }

### 出力

## バージョン

### 言語

- C++26

### 処理系

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

## 参照

- P2300R10 `std::execution`