MCPcopy Create free account
hub / github.com/NVIDIA/stdexec / ensure_started_t

Class ensure_started_t

include/exec/ensure_started.hpp:42–80  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

40 } // namespace __ensure_started
41
42 struct ensure_started_t
43 {
44 template <class _Env = STDEXEC::env<>, STDEXEC::sender_in<_Env> _CvSender>
45 [[nodiscard]]
46 auto
47 operator()(_CvSender&& __sndr, _Env&& __env = {}) const -> STDEXEC::__well_formed_sender auto
48 {
49 if constexpr (__ensure_started::__is_ensure_started_sender<_CvSender>)
50 {
51 return static_cast<_CvSender&&>(__sndr);
52 }
53 else
54 {
55 return STDEXEC::transform_sender(
56 STDEXEC::__make_sexpr<ensure_started_t>(static_cast<_Env&&>(__env),
57 static_cast<_CvSender&&>(__sndr)),
58 __env);
59 }
60 }
61
62 [[nodiscard]]
63 constexpr auto operator()() const noexcept
64 {
65 return STDEXEC::__closure(*this);
66 }
67
68 template <class _CvSender>
69 static constexpr auto
70 transform_sender(STDEXEC::set_value_t, _CvSender&& __sndr, STDEXEC::__ignore)
71 {
72 static_assert(sender_for<_CvSender, ensure_started_t>);
73 auto __result = __shared::__sndr{ensure_started_t(),
74 STDEXEC::__get<2>(static_cast<_CvSender&&>(__sndr)),
75 STDEXEC::__get<1>(static_cast<_CvSender&&>(__sndr))};
76 // eagerly start the operation:
77 __result.__sh_state_->__try_start();
78 return __result;
79 }
80 };
81
82 inline constexpr ensure_started_t ensure_started{};
83} // namespace experimental::execution

Callers 1

transform_senderMethod · 0.70

Calls

no outgoing calls

Tested by

no test coverage detected