31 template<
typename CPO,
typename Completions>
34 template<
typename CPO,
typename Completions>
38 template<
typename CPO,
typename Fun,
typename Completions>
54 template<concepts::Expected T>
56 :
meta::TypeConstant<meta::List<ComplSig<meta::ExpectedValue<T>>, SetError(meta::ExpectedError<T>)>> {};
61 template<
typename CPO,
typename Send,
typename Env,
typename Fun>
68 template<
typename Fun,
typename Rec>
83 template<
typename Fun,
typename Rec>
86 template<
typename CPO,
typename Fun,
typename Rec>
93 template<concepts::SameAs<CPO> Tg,
typename... Args>
101 auto&
data = *self.data;
114 template<concepts::SameAs<CPO> Tg,
typename... Args>
122 function::invoke(util::move(self.data->function), util::forward<Args>(args)...);
126 util::move(self.data->receiver),
127 function::invoke(util::move(self.data->function), util::forward<Args>(args)...));
131 template<concepts::OneOf<SetValue, SetError, SetStopped> Tg,
typename... Args>
135 tag(util::move(self.data->receiver), util::forward<Args>(args)...);
142 template<
typename CPO,
typename Fun,
typename Rec>
145 template<
typename CPO,
typename Send,
typename Fun,
typename Rec>
155 , m_operation(
connect(
util::forward<Send>(sender), Rc(
util::addressof(m_data)))) {}
165 template<
typename CPO,
typename Send,
typename Fun,
typename Rec>
168 template<
typename CPO,
typename Send,
typename Fun>
176 template<concepts::RemoveCVRefSameAs<Type> Self,
typename E>
183 template<concepts::RemoveCVRefSameAs<Type> Self,
typename Rec>
195 template<
typename CPO,
typename Send,
typename Fun>
199 template<concepts::Sender Send, concepts::MovableValue Fun>
201 if constexpr (
requires {
203 util::forward<Send>(sender), util::forward<Fun>(
function));
206 util::forward<Send>(sender), util::forward<Fun>(
function));
207 }
else if constexpr (
requires {
219 template<concepts::Sender Send, concepts::MovableValue Fun>
221 if constexpr (
requires {
223 util::forward<Send>(sender), util::forward<Fun>(
function));
226 util::forward<Send>(sender), util::forward<Fun>(
function));
227 }
else if constexpr (
requires {
239 template<concepts::Sender Send, concepts::MovableValue Fun>
241 if constexpr (
requires {
243 util::forward<Send>(sender), util::forward<Fun>(
function));
246 util::forward<Send>(sender), util::forward<Fun>(
function));
247 }
else if constexpr (
requires {
Definition receiver_of.h:25
meta::Transform< meta::Filter< meta::AsList< Completions >, meta::IsFunctionTo< CPO > >, meta::Quote< meta::AsList > > ArgTypes
Definition then.h:35
meta::Type< ComplSigT< T > > ComplSig
Definition then.h:49
meta::Type< SenderT< CPO, meta::RemoveCVRef< Send >, meta::Decay< Fun > > > Sender
Definition then.h:196
meta::Filter< meta::AsList< Completions >, meta::Not< meta::IsFunctionTo< CPO > > > PassthroughSignatures
Definition then.h:32
meta::Type< ReceiverT< CPO, meta::Decay< Fun >, Rec > > Receiver
Definition then.h:143
meta::Type< OperationStateT< CPO, Send, Fun, Rec > > OperationState
Definition then.h:166
meta::AsTemplate< CompletionSignatures, meta::Concat< PassthroughSignatures< CPO, meta::CompletionSignaturesOf< Send, MakeEnv< Env > > >, meta::Join< meta::Transform< ResultTypes< CPO, Fun, meta::CompletionSignaturesOf< Send, MakeEnv< Env > > >, meta::Quote< InvokeSigs > > > > > Sigs
Definition then.h:62
meta::Transform< ArgTypes< CPO, Completions >, meta::Uncurry< meta::BindFront< meta::Quote< meta::InvokeResult >, Fun > > > ResultTypes
Definition then.h:39
meta::Type< DataT< meta::Decay< Fun >, Rec > > Data
Definition then.h:84
meta::Type< InvokeSigsT< T > > InvokeSigs
Definition then.h:59
constexpr auto upon_stopped
A sender that maps the stop signal into a value.
Definition then.h:302
constexpr auto set_error
Definition set_error.h:14
constexpr auto start
Definition start.h:20
constexpr auto then
A sender that maps values into another value.
Definition then.h:276
constexpr auto make_env
Create an environment with overrides for queries.
Definition make_env.h:147
constexpr auto upon_error
A sender that maps an error into a value.
Definition then.h:289
constexpr auto get_completion_scheduler
Definition get_completion_scheduler.h:19
constexpr auto get_env
Definition get_env.h:27
constexpr auto connect
Definition connect.h:42
constexpr auto set_value
Definition set_value.h:14
constexpr tag_invoke_detail::TagInvokeFn tag_invoke
Definition tag_invoke.h:22
constexpr auto invoke
Definition invoke.h:100
constexpr auto curry_back
Definition curry_back.h:141
di::meta::Decay< decltype(T)> Tag
Definition tag_invoke.h:28
constexpr auto forward_like(U &&value) -> decltype(auto)
Definition forward_like.h:8
constexpr auto c_
A value of type Constexpr<val>.
Definition constexpr.h:252
Fun function
Definition then.h:77
Rec receiver
Definition then.h:78
auto operator()(Send &&sender, Fun &&function) const -> concepts::Sender auto
Definition then.h:220
friend void tag_invoke(Tag< start >, Type &self)
Definition then.h:158
Type(Send &&sender, Fun &&function, Rec receiver)
Definition then.h:153
friend void tag_invoke(Tg const tag, Type &&self, Args &&... args)
Definition then.h:132
friend void tag_invoke(Tg, Type &&self, Args &&... args)
Definition then.h:115
friend void tag_invoke(Tg, Type &&self, Args &&... args)
Definition then.h:98
void is_receiver
Definition then.h:89
Data< Fun, Rec > * data
Definition then.h:91
friend auto tag_invoke(Tag< get_env >, Type const &self)
Definition then.h:138
Fun function
Definition then.h:174
void is_sender
Definition then.h:171
friend auto tag_invoke(Tag< connect >, Self &&self, Rec receiver)
Definition then.h:186
Send sender
Definition then.h:173
friend auto tag_invoke(Tag< get_completion_signatures >, Self &&, E &&) -> Sigs< CPO, meta::Like< Self, Send >, E, Fun >
Definition then.h:178
friend auto tag_invoke(Tag< get_env >, Type const &self)
Definition then.h:191
auto operator()(Send &&sender, Fun &&function) const -> concepts::Sender auto
Definition then.h:240
auto operator()(Send &&sender, Fun &&function) const -> concepts::Sender auto
Definition then.h:200
Definition completion_signuatures.h:7