3#include "../detail/task_adapters/traits.hpp"
20template <
typename Task,
typename Ctx,
typename Prev = no_prev>
22 requires(Task&
task, exec_context<Ctx, Prev>& ec) {
27template <
typename Task,
typename Ctx,
typename Prev = no_prev>
30 requires(Task&
task, exec_context<Ctx, Prev>& ec) {
35 std::declval<detail::typed_slot<detail::declared_task_output_t<Task>>&>()})
36 } -> std::same_as<step_result>;
47template <
typename Task,
typename Ctx,
typename Prev = no_prev>
61template <
typename Task,
typename Policy,
typename Ctx,
typename Prev = no_prev>
66template <
typename Task,
typename Policy,
typename Ctx,
typename Prev = no_prev>
69 std::is_nothrow_invocable_r_v<step_result, Policy&, const std::exception_ptr&>;
82template <
typename Policy>
84 requires(
const std::remove_cvref_t<Policy>& policy, std::size_t retry_count) {
85 { policy.should_retry(retry_count) }
noexcept -> std::convertible_to<bool>;
Reports whether a task object exposes the raw execution protocol for a concrete exec_context.
Reports whether catch_as_failure(task, policy) can wrap Task using the provided fallback Policy.
Reports whether catch_as_failure(task) can wrap Task for a concrete execution context without a custo...
Reports whether a retry policy exposes the minimal protocol required by with_retry(....
constexpr bool is_adapter_descriptor_v
constexpr auto task(F &&f)