8#include "../../context.hpp"
9#include "../../result.hpp"
10#include "../task/traits.hpp"
14template <
typename Task,
typename Ctx,
typename Prev>
31 std::is_same_v<R, step_result>;
43template <
typename Policy,
typename =
void>
46template <
typename Policy>
48 using type = std::invoke_result_t<Policy&, const std::exception_ptr&>;
51template <
typename Policy>
54template <
typename Task,
typename =
void>
57template <
typename Task>
60 std::
void_t<typename std::remove_cvref_t<Task>::raw_result_type>
62 using type =
typename std::remove_cvref_t<Task>::raw_result_type;
65template <
typename Task>
88template <
typename Task,
typename Ctx,
typename Prev,
typename =
void>
91template <
typename Task,
typename Ctx,
typename Prev>
96 std::
void_t<declared_task_raw_result_t<Task>>
97> : std::bool_constant<
99 raw_task_result_t<Task&, Ctx, Prev>,
100 declared_task_raw_result_t<Task>>> {};
102template <
typename Task,
typename Ctx,
typename Prev>
106template <
typename Task,
typename =
void>
109template <
typename Task>
112 std::
void_t<declared_task_raw_result_t<Task>>
118template <
typename Task,
typename Policy,
typename =
void>
121template <
typename Task,
typename Policy>
126 declared_task_raw_result_t<Task>,
127 policy_result_t<std::remove_cvref_t<Policy>>
135template <
typename Task,
typename =
void>
138template <
typename Task>
141 std::
void_t<declared_task_raw_result_t<Task>>
161template <
typename R,
typename Policy,
typename =
void>
164template <
typename R,
typename Policy>
168 std::
void_t<std::invoke_result_t<Policy&, const std::exception_ptr&>>>
169 : std::bool_constant<
170 std::is_nothrow_invocable_v<Policy&, const std::exception_ptr&> &&
172 ? std::is_same_v<policy_result_t<Policy>, step_result>
173 : (!std::is_reference_v<R> &&
174 std::is_convertible_v<policy_result_t<Policy>, R>))> {};
176template <
typename R,
typename Policy>
constexpr bool declared_task_raw_result_matches_invoke_raw_v
decltype(std::declval< Task >().invoke_raw(std::declval< exec_context< Ctx, Prev > & >())) raw_task_result_t
constexpr bool catch_policy_supported_v
typename policy_result< Policy >::type policy_result_t
constexpr bool default_catch_supported_v
Reports whether the default catch_as_failure(task) adapter can synthesize a failure result for raw re...
constexpr bool is_adapter_descriptor_v
typename declared_task_raw_result< Task >::type declared_task_raw_result_t
std::conditional_t< std::is_void_v< inner_type >, step_result, inner_type > raw_result_type
declared_task_raw_result_t< Task > inner_type
std::conditional_t< std::is_void_v< inner_type >, policy_type, inner_type > raw_result_type
declared_task_raw_result_t< Task > inner_type
policy_result_t< std::remove_cvref_t< Policy > > policy_type
Trait that reports whether a fallback policy is compatible with raw task result type R.
typename std::remove_cvref_t< Task >::raw_result_type type
Reports whether a task's declared raw_result_type agrees with the concrete return type of invoke_raw(...
std::invoke_result_t< Policy &, const std::exception_ptr & > type
Extracts the result type returned by an exception fallback policy.
declared_task_raw_result_t< Task > raw_result_type
Lightweight borrowed view used during execution.
Represents the basic outcome of a task step.