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>
decltype(auto) await_transform(T&& value)
noexcept(noexcept(std::forward<T>(value).as_awaitable(declval<Derived&>())))
{
return std::forward<T>(value).as_awaitable(static_cast<Derived&>(*this));
}
};
}
概要
with-await-transform
は、実行制御ライブラリの仕様定義で用いられる説明専用のクラステンプレートである。
バージョン
言語
- C++26