64 template<
typename Env, concepts::SenderIn<Env> Send>
67 template<
typename Env,
typename... Sends>
70 template<
typename Env,
typename... Sends>
74 template<
typename Env,
typename... Sends>
81 template<
typename Env,
typename... Sends>
90 template<
typename E,
typename... Sends>
93 meta::AsTemplate<types::CompletionSignatures, meta::PushFront<NonValueCompletions<Env<E>, Sends...>,
94 ValueCompletion<Env<E>, Sends...>>>> {};
96 template<
typename E,
typename... Sends>
101 template<
typename E,
typename... Sends>
104 template<
typename... Types>
107 template<
typename Env,
typename... Sends>
110 template<
typename Env,
typename... Sends>
113 :
meta::TypeConstant<
116 template<
typename Env,
typename... Sends>
119 template<
typename... Types>
125 template<
typename Env,
typename... Sends>
136 template<
typename Rec,
typename... Sends>
145 using StopCallback = StopToken::template CallbackType<StopCallbackFunction>;
149 template<
usize index,
typename... Types>
152 ((void) values, ...);
155 optional.emplace(util::forward<Types>(values)...);
165 this->
error.template emplace<meta::Decay<E>>(util::forward<E>(
error));
174 error.template emplace<Stopped>();
181 if (old_value == 1) {
190 [&]<
typename E>(E&& e) {
204 [](
auto&... optionals) {
209 [&](
auto&... values) {
233 template<usize index,
typename Send,
typename Data>
240 template<
typename... Types>
242 self.data->report_value(
c_<index>, util::forward<Types>(values)...);
247 self.data->report_error(util::forward<E>(error));
259 template<usize index, concepts::Sender Send,
typename Data>
262 template<
typename Rec,
typename Indices,
typename Sends>
265 template<
typename Rec,
usize... indices,
typename... Sends>
272 explicit Type(Rec out_r, Sends&&... senders)
273 : m_data(
util::move(out_r))
286 if (self.m_data.stop_source.stop_requested()) {
295 [[no_unique_address]]
Data m_data;
296 [[no_unique_address]] OpStates m_op_states;
300 template<concepts::Receiver Rec,
typename Indices, concepts::TypeList Sends>
303 template<
typename... Senders>
309 template<
typename... Ts>
313 template<concepts::RemoveCVRefSameAs<Type> Self,
typename E>
320 template<concepts::RemoveCVRefSameAs<Type> Self, concepts::Receiver Rec>
324 [&](
auto&&... senders) {
327 util::move(out_r), util::forward<decltype(senders)>(senders)...
330 util::forward<Self>(self).m_senders);
342 requires(
sizeof...(Senders) > 0)
354 requires(
sizeof...(Senders) > 0)
366 requires(
sizeof...(Senders) > 0)
369 return function::tag_invoke(*
this, util::forward<Sched>(sched), util::forward<Senders>(senders)...);
378 requires(
sizeof...(Senders) > 0)
381 return function::tag_invoke(*
this, util::forward<Sched>(sched), util::forward<Senders>(senders)...);
Definition in_place_stop_source.h:11
Definition in_place_stop_token.h:6
Definition defer_construct.h:8
Definition optional_forward_declaration.h:5
Definition tuple_forward_declaration.h:5
Definition receiver_of.h:25
Definition scheduler.h:21
Definition sender_in.h:10
Definition tag_invoke.h:33
meta::AsTemplate< vocab::Variant, meta::Unique< meta::List< meta::Decay< Types >... > > > DecayedVariant
Definition when_all.h:120
meta::AsLanguageFunction< SetValue, meta::Transform< meta::Concat< meta::ValueTypesOf< Sends, Env, meta::List, meta::TypeIdentity >... >, meta::Quote< DecayedRValue > > > ValueCompletion
Definition when_all.h:83
vocab::Optional< vocab::Tuple< meta::Decay< Types >... > > DecayedOptionalTuple
Definition when_all.h:105
meta::Type< DataT< Rec, Sends... > > Data
Definition when_all.h:231
meta::Type< OperationStateT< Rec, Indices, Sends > > OperationState
Definition when_all.h:301
meta::Unique< meta::PushBack< meta::Transform< meta::Concat< meta::ErrorTypesOf< Sends, Env, meta::List >... >, meta::Compose< meta::BindFront< meta::Quote< meta::AsLanguageFunction >, SetError >, meta::Quote< meta::List >, meta::Quote< DecayedRValue > > >, SetStopped()> > NonValueCompletions
Definition when_all.h:75
meta::Type< CompletionSignaturesT< E, Sends... > > Sigs
Definition when_all.h:102
meta::Type< SenderT< Senders... > > Sender
Definition when_all.h:338
MakeEnv< E, With< Tag< get_stop_token >, sync::InPlaceStopToken > > Env
Definition when_all.h:88
meta::Type< ValueStorageT< Env, Sends... > > ValueStorage
Definition when_all.h:117
meta::Type< ReceiverT< index, Send, Data > > Receiver
Definition when_all.h:260
meta::AsTemplate< DecayedVariant, meta::Concat< meta::List< NotError, Stopped >, meta::ErrorTypesOf< Sends, Env, meta::List >... > > ErrorStorage
Definition when_all.h:126
meta::Decay< T > && DecayedRValue
Definition when_all.h:62
constexpr bool never_sends_value
Definition when_all.h:71
constexpr usize set_value_count
Definition when_all.h:65
constexpr auto set_error
Definition set_error.h:14
constexpr auto transfer
Definition transfer.h:30
constexpr auto start
Definition start.h:20
constexpr auto into_variant
Definition into_variant.h:86
constexpr auto make_env
Create an environment with overrides for queries.
Definition make_env.h:147
constexpr auto when_all
Definition when_all.h:390
constexpr auto set_stopped
Definition set_stopped.h:14
constexpr auto with
Specify an override for an environment query.
Definition make_env.h:112
constexpr auto transfer_when_all_with_variant
Definition when_all.h:393
constexpr auto get_stop_token
Definition get_stop_token.h:25
decltype(make_env(util::declval< BaseEnv >(), util::declval< Withs >()...)) MakeEnv
Represent an environment with overrides for queries.
Definition make_env.h:189
constexpr auto get_env
Definition get_env.h:27
constexpr auto transfer_when_all
Definition when_all.h:392
constexpr auto connect
Definition connect.h:42
constexpr auto set_value
Definition set_value.h:14
constexpr auto when_all_with_variant
Definition when_all.h:391
constexpr tag_invoke_detail::TagInvokeFn tag_invoke
Definition tag_invoke.h:22
@ AcquireRelease
Definition memory_order.h:11
size_t usize
Definition integers.h:33
di::meta::Decay< decltype(T)> Tag
Definition tag_invoke.h:28
constexpr auto get(T &&value) -> decltype(auto)
Definition get.h:8
void unreachable()
Definition unreachable.h:4
constexpr auto tuple_cat(Tups &&... tuples)
Definition tuple_cat.h:11
constexpr auto tie
Definition tie.h:15
constexpr auto apply(F &&f, Tup &&tuple) -> decltype(detail::apply_impl(meta::MakeIndexSequence< meta::TupleSize< Tup > > {}, util::forward< F >(f), util::forward< Tup >(tuple)))
Definition apply.h:22
constexpr auto visit(Vis &&visitor, Vars &&... variants) -> R
Definition visit.h:39
constexpr void tuple_for_each(F &&function, Tup &&tuple)
Definition tuple_for_each.h:22
constexpr auto holds_alternative
Definition holds_alternative.h:21
constexpr auto c_
A value of type Constexpr<val>.
Definition constexpr.h:252
constexpr auto in_place
Definition in_place.h:8
Definition set_stopped.h:6
StopToken::template CallbackType< StopCallbackFunction > StopCallback
Definition when_all.h:145
Type(Rec out_r_)
Definition when_all.h:147
ErrorStorage< Env, Sends... > Error
Definition when_all.h:142
void report_value(Constexpr< index >, Types &&... values)
Definition when_all.h:150
usize Count
Definition when_all.h:143
ValueStorage< Env, Sends... > Value
Definition when_all.h:141
sync::Atomic< bool > failed
Definition when_all.h:225
sync::Atomic< Count > remaining
Definition when_all.h:224
meta::EnvOf< Rec > Env
Definition when_all.h:140
Error error
Definition when_all.h:221
void finish_one()
Definition when_all.h:179
void report_error(E &&error)
Definition when_all.h:161
vocab::Optional< StopCallback > stop_callback
Definition when_all.h:226
void report_stop()
Definition when_all.h:170
sync::InPlaceStopSource stop_source
Definition when_all.h:223
Rec out_r
Definition when_all.h:222
meta::StopTokenOf< Env > StopToken
Definition when_all.h:144
Value value
Definition when_all.h:220
Definition when_all.h:137
Definition when_all.h:340
Definition when_all.h:122
Definition when_all.h:263
Type(Rec out_r, Sends &&... senders)
Definition when_all.h:272
when_all_ns::Data< Rec, Sends... > Data
Definition when_all.h:269
vocab::Tuple< meta::ConnectResult< Sends, Receiver< indices, Sends, Data > >... > OpStates
Definition when_all.h:270
friend void tag_invoke(types::Tag< execution::start >, Type &self)
Definition when_all.h:280
Definition when_all.h:235
Data * data
Definition when_all.h:238
friend void tag_invoke(types::Tag< execution::set_stopped >, Type &&self)
Definition when_all.h:250
friend auto tag_invoke(types::Tag< execution::get_env >, Type const &self)
Definition when_all.h:252
friend void tag_invoke(types::Tag< execution::set_error >, Type &&self, E &&error)
Definition when_all.h:246
void is_receiver
Definition when_all.h:236
friend void tag_invoke(types::Tag< execution::set_value >, Type &&self, Types &&... values)
Definition when_all.h:241
Definition when_all.h:234
Type(InPlace, Ts &&... ts)
Definition when_all.h:310
void is_sender
Definition when_all.h:307
friend auto tag_invoke(types::Tag< execution::get_completion_signatures >, Self &&, E &&) -> Sigs< E, meta::Like< Self, Senders >... >
Definition when_all.h:315
friend auto tag_invoke(types::Tag< execution::connect >, Self &&self, Rec out_r)
Definition when_all.h:322
Definition when_all.h:304
Definition when_all.h:130
sync::InPlaceStopSource & stop_source
Definition when_all.h:131
void operator()() const noexcept
Definition when_all.h:133
Definition when_all.h:123
Definition when_all.h:364
Definition when_all.h:376
Definition when_all.h:108
Definition when_all.h:352
Definition completion_signuatures.h:7