最終更新日時: 2025年07月14日 23時04分00秒 (JST)
Koichi Murase が更新

履歴 編集

type-alias
<execution>

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

    namespace std::execution {
      template<sender Sndr>
      using tag_of_t = see below;
    }

## 概要

Sender型 `Sndr`のSenderアルゴリズムタグ型を取得する。

説明用の`sndr`を`decltype((sndr))`が`Sndr`型となる式とする。型`tag_of_t<Sndr>`は下記の通り定義される。

- 次の宣言が適格であれば、`tag_of_t<Sndr>`は`decltype(auto(tag))`の別名となる。

      auto&& [tag, data, ...children] = sndr;

- そうでなければ、`tag_of_t<Sndr>`は不適格となる。

### Senderアルゴリズムタグ

実行制御ライブラリのSenderアルゴリズムから生成されたSender `sndr`は、構造化束縛によってSenderアルゴリズムタグ`tag`、データ`data`、0個以上の子Senderパック`...children`の組へと分解される。

この仕様はSender変換が行われる可能性のあるSenderアルゴリズムに対してのみ要求されるものであり、ユーザ定義のSender型において構造化束縛による分解をサポートする必要はない。

## 例

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

    int main()
    {
      ex::sender auto sndr = ex::just(42);
      using Tag = ex::tag_of_t<decltype(sndr)>;
      static_assert(std::same_as<Tag, ex::just_t>);
    }

### 出力

## バージョン

### 言語

- C++26

### 処理系

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

## 関連項目

- `basic-sender`

## 参照

- P2999R3 Sender Algorithm Customization
- P2300R10 `std::execution`