Iros
 
Loading...
Searching...
No Matches
inline_scheduler.h
Go to the documentation of this file.
1#pragma once
2
11
12namespace di::execution {
14private:
15 template<typename Rec>
16 struct OperationStateT {
17 struct Type {
18 [[no_unique_address]] Rec receiver;
19
20 friend void tag_invoke(types::Tag<start>, Type& self) { execution::set_value(util::move(self.receiver)); }
21 };
22 };
23
24 template<concepts::Receiver Rec>
25 using OperationState = meta::Type<OperationStateT<Rec>>;
26
27 struct Sender {
28 using is_sender = void;
29
31
32 private:
33 template<typename Rec>
34 auto do_connect(Rec receiver) {
35 return OperationState<Rec> { util::move(receiver) };
36 }
37
38 template<concepts::ReceiverOf<CompletionSignatures> Rec>
39 friend auto tag_invoke(types::Tag<connect>, Sender self, Rec receiver) {
40 return self.do_connect(util::move(receiver));
41 }
42
43 struct Env {
44 template<typename CPO>
45 friend auto tag_invoke(GetCompletionScheduler<CPO>, Env) {
46 return InlineScheduler {};
47 }
48 };
49
50 friend auto tag_invoke(types::Tag<get_env>, Sender) { return Env {}; }
51 };
52
53public:
54 InlineScheduler() = default;
55
56private:
57 friend auto operator==(InlineScheduler const&, InlineScheduler const&) -> bool = default;
58 friend auto tag_invoke(types::Tag<schedule>, InlineScheduler const&) { return Sender {}; }
59};
60}
61
62namespace di {
63using execution::InlineScheduler;
64}
Definition bulk.h:30
constexpr auto set_value
Definition set_value.h:14
T::Type Type
Definition core.h:26
di::meta::Decay< decltype(T)> Tag
Definition tag_invoke.h:28
Definition zstring_parser.h:9
constexpr tag_invoke_detail::TagInvokeFn tag_invoke
Definition tag_invoke.h:22
friend void tag_invoke(types::Tag< start >, Type &self)
Definition inline_scheduler.h:20
Rec receiver
Definition inline_scheduler.h:18
friend auto tag_invoke(types::Tag< schedule >, InlineScheduler const &)
Definition inline_scheduler.h:58
friend auto operator==(InlineScheduler const &, InlineScheduler const &) -> bool=default
Definition set_value.h:6
Definition completion_signuatures.h:7