di 0.1.0
Loading...
Searching...
No Matches
make_completion_signatures.h
Go to the documentation of this file.
1#pragma once
2
9
10namespace di::meta {
11namespace detail {
12 template<typename... Values>
13 using DefaultSetValue = types::CompletionSignatures<execution::SetValue(Values...)>;
14
15 template<typename Error>
16 using DefaultSetError = types::CompletionSignatures<execution::SetError(Error)>;
17
18 template<typename A, typename B, typename C, typename D>
19 struct MakeCompletionSignaturesHelper;
20
21 template<
22 concepts::InstanceOf<types::CompletionSignatures> As, concepts::InstanceOf<types::CompletionSignatures>... Bs,
23 concepts::InstanceOf<types::CompletionSignatures>... Cs, concepts::InstanceOf<types::CompletionSignatures> Ds>
24 struct MakeCompletionSignaturesHelper<As, meta::List<Bs...>, meta::List<Cs...>, Ds>
25 : TypeConstant<meta::AsTemplate<types::CompletionSignatures,
26 meta::Unique<meta::Concat<meta::AsList<As>, meta::AsList<Bs>...,
27 meta::AsList<Cs>..., meta::AsList<Ds>>>>> {};
28}
29
30template<typename Send, typename Env = types::EmptyEnv,
31 concepts::ValidCompletionSignatures ExtraSigs = types::CompletionSignatures<>,
32 template<typename...> typename SetValue = detail::DefaultSetValue,
33 template<typename...> typename SetError = detail::DefaultSetError,
34 concepts::ValidCompletionSignatures SetStopped = types::CompletionSignatures<execution::SetStopped()>>
35requires(concepts::SenderIn<Send, Env>)
36using MakeCompletionSignatures = Type<detail::MakeCompletionSignaturesHelper<
40}
MakeEnv< EmptyEnv, With< Tag< get_stop_token >, StopToken > > Env
Definition ensure_started.h:52
Definition merge_interfaces.h:6
detail::ConditionalHelper< value, T, U >::Type Conditional
Definition core.h:88
T::Type Type
Definition core.h:26
GatherSignatures< execution::SetValue, Sender, Env, Tup, Var > ValueTypesOf
Definition value_types_of.h:14
Type< detail::MakeCompletionSignaturesHelper< ExtraSigs, meta::ValueTypesOf< Send, Env, SetValue, meta::List >, meta::Transform< meta::ErrorTypesOf< Send, Env, meta::List >, meta::Quote< SetError > >, meta::Conditional< meta::sends_stopped< Send, Env >, SetStopped, types::CompletionSignatures<> > > > MakeCompletionSignatures
Definition make_completion_signatures.h:36
GatherSignatures< execution::SetError, Sender, Env, meta::TypeIdentity, Var > ErrorTypesOf
Definition error_types_of.h:13
detail::TransformHelper< List, Function >::Type Transform
Definition algorithm.h:186
constexpr bool sends_stopped
Definition sends_stopped.h:13
StatusCode< Erased< long > > Error
Definition error.h:8
Definition set_stopped.h:6
Definition function.h:30