namespace std::execution {
struct just_error_t { unspecified };
inline constexpr just_error_t just_error{};
}
概要
just_error
は、非同期操作の開始(start)でエラー完了関数を呼び出すSenderファクトリである。
効果
説明用のパックts
に対して、パックTs
をdecltype((ts))
とする。下記いずれかの条件をみたすとき、呼び出し式just_error(ts...)
は不適格となる。
(movable-value<Ts> &&...) == false
、もしくはsizeof...(ts) == 1
がfalse
そうでなければ、呼び出し式just_error(ts...)
は下記と等価。
make-sender(just_error, product-type{ts...})
Senderアルゴリズムタグ just_error
Senderアルゴリズム動作説明用のクラステンプレートimpls-for
に対して、下記の特殊化が定義される。
namespace std::execution {
template<>
struct impls-for<decayed-typeof<just_error>> : default-impls {
static constexpr auto start =
[](auto& state, auto& rcvr) noexcept -> void {
auto& [...ts] = state;
set_error(std::move(rcvr), std::move(ts)...);
};
};
}
カスタマイゼーションポイント
Receiverとの接続(connect)時に、関連付けられた実行ドメインに対してexecution::transform_sender
経由でSender変換が行われる。
デフォルト実行ドメインでは無変換。
例
#include <execution>
namespace ex = std::execution;
int main()
{
// エラー(42)を送信するSender
ex::sender auto sndr = ex::just_error(42);
}
出力
バージョン
言語
- C++26
処理系
- Clang: ??
- GCC: ??
- ICC: ??
- Visual C++: ??