最終更新日時(UTC): 2026年02月08日 09時00分28秒
yoh が更新

履歴 編集

class template
<execution>

# std::execution::with-await-transform(C++26)

    namespace std::execution {
      template<class T, class Promise>
      concept has-as-awaitable =  // exposition only
        requires (T&& t, Promise& p) {
          { std::forward<T>(t).as_awaitable(p) } -> is-awaitable<Promise&>;
        };

      template<class Derived>
      struct with-await-transform {  // exposition only
        template<class T>
        T&& await_transform(T&& value) noexcept {
          return std::forward<T>(value);
        }

        template<has-as-awaitable<Derived> T>
        auto await_transform(T&& value)
          noexcept(noexcept(std::forward<T>(value).as_awaitable(declval<Derived&>())))
          -> decltype(std::forward<T>(value).as_awaitable(declval<Derived&>()))
        {
          return std::forward<T>(value).as_awaitable(static_cast<Derived&>(*this));
        }
      };
    }

## 概要

`with-await-transform`は、実行制御ライブラリの仕様定義で用いられる説明専用のクラステンプレートである。

## バージョン

### 言語

- C++26

## 関連項目

- `execution::sender`
- `execution::connect`

## 参照

- P2300R10 `std::execution`
- LWG 4201. `with-await-transform::await_transform` should not use a deduced return type