@@ -2503,6 +2503,8 @@ namespace stdexec {
25032503 inline constexpr __submit_t __submit{};
25042504
25052505 namespace __inln {
2506+ struct __scheduler ;
2507+
25062508 template <class _Receiver >
25072509 struct __op : __immovable {
25082510 _Receiver __recv_;
@@ -2513,7 +2515,8 @@ namespace stdexec {
25132515 };
25142516
25152517 struct __schedule_t {
2516- static auto get_env (__ignore) noexcept ;
2518+ static auto get_env (__ignore) noexcept
2519+ -> __env::__prop<get_completion_scheduler_t<set_value_t>, __scheduler>;
25172520
25182521 using __compl_sigs = stdexec::completion_signatures<set_value_t ()>;
25192522 static __compl_sigs get_completion_signatures (__ignore, __ignore);
@@ -2529,17 +2532,23 @@ namespace stdexec {
25292532 using __t = __scheduler;
25302533 using __id = __scheduler;
25312534
2532- friend auto tag_invoke (schedule_t , __scheduler) {
2535+ STDEXEC_DETAIL_CUDACC_HOST_DEVICE //
2536+ friend auto
2537+ tag_invoke (schedule_t , __scheduler) {
25332538 return make_sender_expr<__schedule_t >();
25342539 }
25352540
2541+ friend forward_progress_guarantee
2542+ tag_invoke (get_forward_progress_guarantee_t , __scheduler) noexcept {
2543+ return forward_progress_guarantee::weakly_parallel;
2544+ }
2545+
25362546 bool operator ==(const __scheduler&) const noexcept = default ;
25372547 };
25382548
2539- inline auto __schedule_t::get_env (__ignore) noexcept {
2540- return __env::__env_fn{[](get_completion_scheduler_t <set_value_t >) noexcept {
2541- return __scheduler{};
2542- }};
2549+ inline auto __schedule_t::get_env (__ignore) noexcept
2550+ -> __env::__prop<get_completion_scheduler_t<set_value_t>, __scheduler> {
2551+ return __mkprop (get_completion_scheduler<set_value_t >, __scheduler{});
25432552 }
25442553 }
25452554
0 commit comments