@@ -30,18 +30,26 @@ namespace exec {
3030 // ///////////////////////////////////////////////////////////////////////////
3131 // [execution.execute]
3232 struct __execute_t {
33- template <STDEXEC::scheduler _Scheduler, class _Fun >
34- requires STDEXEC::__callable<_Fun&> && STDEXEC::__std::move_constructible<_Fun>
33+ template <STDEXEC::scheduler _Scheduler, STDEXEC::__std::move_constructible _Fun>
34+ requires STDEXEC::__callable<_Fun&>
3535 void operator ()(_Scheduler&& __sched, _Fun __fun) const noexcept (false ) {
3636 auto __domain = STDEXEC::get_domain (__sched);
3737 STDEXEC::apply_sender (
38- __domain, *this , STDEXEC::schedule (static_cast <_Scheduler&&>(__sched)), static_cast <_Fun&&>(__fun));
38+ __domain,
39+ *this ,
40+ STDEXEC::schedule (static_cast <_Scheduler&&>(__sched)),
41+ static_cast <_Fun&&>(__fun));
3942 }
4043
41- template <STDEXEC::sender_of<STDEXEC::set_value_t ()> _Sender, class _Fun >
42- requires STDEXEC::__callable<_Fun&> && STDEXEC::__std::move_constructible<_Fun>
44+ template <STDEXEC::sender _Sender, STDEXEC::__std::move_constructible _Fun>
45+ requires STDEXEC::__callable<_Fun&>
46+ && STDEXEC::__callable<
47+ start_detached_t ,
48+ STDEXEC::__result_of<STDEXEC::then, _Sender, _Fun>
49+ >
4350 void apply_sender (_Sender&& __sndr, _Fun __fun) const noexcept (false ) {
44- exec::start_detached (STDEXEC::then (static_cast <_Sender&&>(__sndr), static_cast <_Fun&&>(__fun)));
51+ exec::start_detached (
52+ STDEXEC::then (static_cast <_Sender&&>(__sndr), static_cast <_Fun&&>(__fun)));
4553 }
4654 };
4755
@@ -51,4 +59,3 @@ namespace exec {
5159 [[deprecated]]
5260 inline constexpr const __execute_t & execute = __execute;
5361} // namespace exec
54-
0 commit comments