42 template<
typename Env,
typename Seq>
46 template<
typename... Types>
52 template<
typename Env,
typename Seq>
59 template<
typename Seq,
typename Rec>
66 explicit Type(Rec receiver_)
73 this->
error.template emplace<meta::Decay<E>>(util::forward<E>(
error));
80 this->
error.template emplace<Stopped>();
91 [&]<
typename E>(E&&
error) {
110 template<concepts::Sender Seq, concepts::Receiver Rec>
113 template<
typename Seq,
typename Rec,
typename Next,
typename NextRec>
120 template<concepts::Sender Seq, concepts::Receiver Rec, concepts::Sender Next, concepts::Receiver NextRec>
123 template<
typename Seq,
typename Rec,
typename Next,
typename NextRec>
132 : m_next_data(next_data), m_data(
data) {}
134 auto base() const& -> NextRec const& {
return m_next_data->next_receiver; }
135 auto base() && -> NextRec&& {
return util::move(m_next_data->next_receiver); }
139 if (m_data->stop_token.stop_requested()) {
148 m_data->report_error(util::forward<E>(error));
153 m_data->report_stop();
162 template<concepts::Sender Seq, concepts::Receiver Rec, concepts::Sender Next, concepts::Receiver NextRec>
165 template<
typename Seq,
typename Rec,
typename Next,
typename NextRec>
171 : m_next_data(
util::move(next_receiver))
172 , m_operation(
connect(
util::forward<Next>(next_sender),
183 template<concepts::Sender Seq, concepts::Receiver Rec, concepts::Sender Next, concepts::Receiver NextRec>
186 template<
typename Next,
typename Env>
192 template<
typename Seq,
typename Rec,
typename Next>
197 [[no_unique_address]] Next
next;
200 template<concepts::RemoveCVRefSameAs<Type> Self,
typename NextRec>
207 template<concepts::RemoveCVRefSameAs<Type> Self,
typename Env>
219 template<concepts::Sender Seq, concepts::Receiver Rec, concepts::Sender Next>
222 template<
typename Seq,
typename Rec>
232 auto base() const& -> Rec const& {
return m_data->receiver; }
233 auto base() && -> Rec&& {
return util::move(m_data->receiver); }
236 void set_value() && { m_data->finish(); }
238 template<concepts::Sender Next>
247 template<concepts::Sender Seq, concepts::Receiver Rec>
250 template<
typename Seq,
typename Rec>
256 explicit Type(Seq&& sender, Rec receiver)
257 : m_data(
util::move(receiver))
268 template<concepts::Sender Seq, concepts::Receiver Rec>
271 template<
typename Err>
274 template<
typename Seq,
typename Env>
280 template<
typename Seq>
287 template<concepts::RemoveCVRefSameAs<Type> Self,
typename Rec>
291 util::move(receiver));
294 template<concepts::RemoveCVRefSameAs<Type> Self,
typename Env>
306 template<concepts::Sender Seq>
310 template<concepts::Sender Seq>
Definition variant_forward_declaration.h:6
#define DI_IMMOVABLE_NO_UNIQUE_ADDRESS
Definition compiler.h:15
Definition receiver_of.h:25
Definition tag_invoke.h:33
Definition ignore_all.h:38
meta::MakeCompletionSignatures< Seq, Env, types::CompletionSignatures< SetValue()>, meta::TypeConstant< types::CompletionSignatures<> >::template Invoke, ErrorsWithStopped > Completions
Definition ignore_all.h:275
meta::Decay< T > && DecayedRValue
Definition ignore_all.h:40
meta::Type< NextSenderT< Seq, Rec, Next > > NextSender
Definition ignore_all.h:220
meta::Type< NextDataT< Seq, Rec, Next, NextRec > > NextData
Definition ignore_all.h:121
meta::Type< NextReceiverT< Seq, Rec, Next, NextRec > > NextReceiver
Definition ignore_all.h:163
types::CompletionSignatures< SetStopped(), SetError(DecayedRValue< Err >)> ErrorsWithStopped
Definition ignore_all.h:272
meta::Type< SenderT< meta::RemoveCVRef< Seq > > > Sender
Definition ignore_all.h:307
vocab::Variant< meta::Decay< Types >... > DecayedVariant
Definition ignore_all.h:47
meta::MakeCompletionSignatures< Next, Env, types::CompletionSignatures< SetValue()>, meta::TypeConstant< types::CompletionSignatures<> >::template Invoke, meta::TypeConstant< types::CompletionSignatures< SetStopped()> >::template Invoke > NextSignatures
Definition ignore_all.h:187
meta::Type< ReceiverT< Seq, Rec > > Receiver
Definition ignore_all.h:248
meta::Type< OperationStateT< Seq, Rec > > OperationState
Definition ignore_all.h:269
meta::Type< DataT< Seq, Rec > > Data
Definition ignore_all.h:111
constexpr bool sends_stopped
Definition ignore_all.h:43
meta::AsTemplate< DecayedVariant, meta::Unique< meta::Concat< meta::Conditional< sends_stopped< Env, Seq >, meta::List< NotError, Stopped >, meta::List< NotError > >, meta::ErrorTypesOf< Seq, Env, meta::List > > > > ErrorStorage
Definition ignore_all.h:53
meta::Type< NextOperationStateT< Seq, Rec, Next, NextRec > > NextOperationState
Definition ignore_all.h:184
constexpr auto set_error
Definition set_error.h:14
constexpr auto ignore_all
Adapt a sequence sender to a regular sender of void, ignoring the sequence's values.
Definition ignore_all.h:334
constexpr auto set_next
Set the next sender of a sequence.
Definition sequence_sender.h:77
constexpr auto start
Definition start.h:20
constexpr auto make_env
Create an environment with overrides for queries.
Definition make_env.h:147
meta::Type< receiver_interface_ns::ReceiverAdaptor< Self, Base > > ReceiverAdaptor
Definition receiver_adaptor.h:236
constexpr auto set_stopped
Definition set_stopped.h:14
constexpr auto subscribe
Subscribe a receiver to a sequence.
Definition sequence_sender.h:234
constexpr auto next
Get the next value of a async range in a coroutine.
Definition async_range.h:52
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 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
@ AcquireRelease
Definition memory_order.h:11
@ Acquire
Definition memory_order.h:9
di::meta::Decay< decltype(T)> Tag
Definition tag_invoke.h:28
void unreachable()
Definition unreachable.h:4
constexpr auto visit(Vis &&visitor, Vars &&... variants) -> R
Definition visit.h:39
constexpr auto forward_like(U &&value) -> decltype(auto)
Definition forward_like.h:8
constexpr auto sequence
Definition sequence.h:34
constexpr auto data
Definition data.h:51
Defines the sequence sender concepts and related CPOs.
Definition set_stopped.h:6
Rec receiver
Definition ignore_all.h:103
void report_stop()
Definition ignore_all.h:77
Error error
Definition ignore_all.h:105
Type(Rec receiver_)
Definition ignore_all.h:66
meta::StopTokenOf< Env > StopToken
Definition ignore_all.h:64
void finish()
Definition ignore_all.h:84
void report_error(E &&error)
Definition ignore_all.h:70
sync::Atomic< bool > failed
Definition ignore_all.h:106
meta::EnvOf< Rec > Env
Definition ignore_all.h:62
StopToken stop_token
Definition ignore_all.h:104
ErrorStorage< Env, Seq > Error
Definition ignore_all.h:63
Definition ignore_all.h:60
Definition ignore_all.h:309
auto operator()(Seq &&sequence) const -> concepts::Sender auto
Definition ignore_all.h:311
Definition ignore_all.h:115
NextRec next_receiver
Definition ignore_all.h:116
Definition ignore_all.h:114
friend void tag_invoke(types::Tag< start >, Type &self)
Definition ignore_all.h:176
Type(Data< Seq, Rec > *data, Next &&next_sender, NextRec next_receiver)
Definition ignore_all.h:170
meta::ConnectResult< Next, NextReceiver< Seq, Rec, Next, NextRec > > Op
Definition ignore_all.h:168
Definition ignore_all.h:166
auto base() const &-> NextRec const &
Definition ignore_all.h:134
Type(NextData< Seq, Rec, Next, NextRec > *next_data, Data< Seq, Rec > *data)
Definition ignore_all.h:131
auto base() &&-> NextRec &&
Definition ignore_all.h:135
Definition ignore_all.h:124
Definition ignore_all.h:194
Next next
Definition ignore_all.h:197
Data< Seq, Rec > * data
Definition ignore_all.h:198
void is_sender
Definition ignore_all.h:195
friend auto tag_invoke(types::Tag< get_completion_signatures >, Self &&, Env &&) -> NextSignatures< meta::Like< Self, Next >, Env >
Definition ignore_all.h:208
constexpr friend auto tag_invoke(types::Tag< get_env >, Type const &self)
Definition ignore_all.h:213
friend auto tag_invoke(types::Tag< connect >, Self &&self, NextRec receiver)
Definition ignore_all.h:202
Definition ignore_all.h:193
Definition ignore_all.h:49
friend void tag_invoke(types::Tag< start >, Type &self)
Definition ignore_all.h:261
Type(Seq &&sender, Rec receiver)
Definition ignore_all.h:256
meta::SubscribeResult< Seq, Receiver< Seq, Rec > > Op
Definition ignore_all.h:254
Definition ignore_all.h:251
auto base() const &-> Rec const &
Definition ignore_all.h:232
Type(Data< Seq, Rec > *data)
Definition ignore_all.h:230
auto base() &&-> Rec &&
Definition ignore_all.h:233
Definition ignore_all.h:223
Definition ignore_all.h:282
friend auto tag_invoke(types::Tag< connect >, Self &&self, Rec receiver)
Definition ignore_all.h:289
void is_sender
Definition ignore_all.h:283
constexpr friend auto tag_invoke(types::Tag< get_env >, Type const &self)
Definition ignore_all.h:300
friend auto tag_invoke(types::Tag< get_completion_signatures >, Self &&, Env &&) -> Completions< meta::Like< Self, Seq >, MakeEnv< Env > >
Definition ignore_all.h:295
Seq sequence
Definition ignore_all.h:285
Definition ignore_all.h:281
Definition ignore_all.h:50
Definition completion_signuatures.h:7