13template <
typename Policy>
18template <
typename Policy>
23template <
typename... Descs>
28template <
typename Policy>
32 std::forward<Policy>(policy)
40template <
typename Policy>
44 std::forward<Policy>(policy)
50template <
typename Desc>
56template <
typename Policy>
59template <
typename Policy>
62template <
typename Desc>
66template <
typename Desc>
73template <
typename...
Descs>
84template <std::
size_t I,
typename Task,
typename Tuple>
86 if constexpr (
I == 0) {
87 return std::forward<Task>(
task);
90 std::get<I - 1>(descriptors),
95template <std::
size_t I,
typename Task,
typename Tuple>
97 if constexpr (
I == 0) {
98 return std::forward<Task>(
task);
101 std::move(std::get<I - 1>(descriptors)),
103 std::forward<Task>(
task),
104 std::forward<Tuple>(descriptors)));
110template <
typename... Descs>
114 std::tuple<std::decay_t<Descs>...> {
115 std::forward<Descs>(descs)...
120template <
typename Task>
122 return std::forward<Task>(
task);
125template <
typename Task,
typename... Descs>
128 std::forward<Task>(
task),
132template <
typename Task,
typename... Descs>
135 std::forward<Task>(
task),
136 std::move(chain).descriptors);
139template <
typename Task,
typename Policy>
144template <
typename Task,
typename Policy>
149template <
typename Task,
typename Policy>
151 return with_retry(std::forward<Task>(
task), std::move(desc.policy));
154template <
typename Task>
157 std::forward<Task>(
task),
161template <
typename Task,
typename Policy>
166template <
typename Task,
typename Policy>
173template <
typename Task,
typename Policy>
Reports whether a retry policy exposes the minimal protocol required by with_retry(....
constexpr auto apply_adapters_from_mut(Task &&task, Tuple &&descriptors)
constexpr auto apply_catch_adapter(Task &&task, PolicyLike &&policy_like)
constexpr auto apply_adapters_from_const(Task &&task, const Tuple &descriptors)
constexpr bool is_adapter_chain_v
constexpr bool is_adapter_descriptor_v
constexpr auto with_retry(Task &&task, Policy &&policy)
Wraps a task so retry results are handled by a user retry policy.
constexpr auto adapt_catch_as_failure() noexcept
constexpr auto value(T &&v) -> value_t< std::remove_cvref_t< T > >
Wraps a value as an owning spec.
constexpr auto apply_adapter(retry_adapter_desc< Policy > &desc, Task &&task)
constexpr auto adapt_retry(Policy &&policy)
constexpr auto apply_adapters(Task &&task, const adapter_chain<> &)
constexpr auto task(F &&f)
constexpr auto adapters(Descs &&... descs)
std::tuple< Descs... > descriptors