Iros
 
Loading...
Searching...
No Matches
connect.h
Go to the documentation of this file.
1#pragma once
2
11
12namespace di::execution {
13namespace detail {
14 struct ConnectFunction;
15
16 template<typename Sender, typename Receiver>
17 concept CustomConnect =
21
22 template<typename Sender, typename Receiver>
23 concept AwaitableConnect = requires(Sender&& sender, Receiver&& receiver) {
24 connect_awaitable_ns::connect_awaitable(util::forward<Sender>(sender), util::forward<Receiver>(receiver));
25 };
26
28 template<typename Sender, typename Receiver>
31 constexpr auto operator()(Sender&& sender, Receiver&& receiver) const -> concepts::OperationState auto {
32 if constexpr (CustomConnect<Sender, Receiver>) {
33 return function::tag_invoke(*this, util::forward<Sender>(sender), util::forward<Receiver>(receiver));
34 } else if constexpr (AwaitableConnect<Sender, Receiver>) {
35 return connect_awaitable_ns::connect_awaitable(util::forward<Sender>(sender),
36 util::forward<Receiver>(receiver));
37 }
38 }
39 };
40}
41
42constexpr inline auto connect = detail::ConnectFunction {};
43}
Check the given environment is a debug environment.
Definition is_debug_env.h:49
Definition operation_state.h:9
Definition receiver_of.h:25
Definition sender.h:11
Definition tag_invoke.h:33
constexpr auto connect_awaitable
Definition connect_awaitable.h:173
Definition read.h:70
Definition bulk.h:30
constexpr auto connect
Definition connect.h:42
constexpr tag_invoke_detail::TagInvokeFn tag_invoke
Definition tag_invoke.h:22