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

履歴 編集

customization point object
<execution>

# std::execution::get_env(C++26)

    namespace std::execution {
      struct get_env_t { unspecified };
      inline constexpr get_env_t get_env{};
    }

## 概要

`get_env`は、対象オブジェクトに関連付けられたクエリ可能オブジェクトを取得するカスタマイゼーションポイントオブジェクトである。

- Senderに関連付けられた属性
- Receiverに関連付けられた環境

## 効果

呼び出し式`get_env(o)`は下記と等価。

- 式が適格であるならば、`MANDATE-NOTHROW(AS-CONST(o).query(get_env))`
  - 上記の式の型は`queryable`を満たすこと。
- そうでなければ、空のクエリ可能オブジェクト`env<>{}`

## 例外

投げない

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

const修飾された対象オブジェクト`co`に対して式`co.get_env()`が呼び出される。 このとき、`noexcept(co.get_env()) == true`であること。

## 備考

Senderに関連付けられたクエリ可能オブジェクトは「属性(attributes)」と呼ばれるが、本`get_env`を用いてクエリ可能オブジェクトを取得する。実行制御ライブラリ仕様検討中には専用の`get_attrs`として存在していたが、同じ動作セマンティクスを持つ`get_env`に統合された経緯がある。

## 例

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

    int main()
    {
      ex::sender auto sndr = ex::just(42);
      auto env = ex::get_env(sndr);
    }

### 出力

## バージョン

### 言語

- C++26

### 処理系

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

## 関連項目

- `execution::sender`
- `execution::receiver`

## 参照

- P2300R10 `std::execution`