From 6e02cdd9b85aede7285d676136af5729ae99238e Mon Sep 17 00:00:00 2001 From: Eric Niebler Date: Thu, 12 Feb 2026 17:48:42 -0800 Subject: [PATCH] `run_loop` has no `set_stopped` completion with unstoppable token --- include/exec/sequence/merge_each.hpp | 10 +++++----- include/exec/sequence_senders.hpp | 16 ++++++++++------ include/stdexec/__detail/__meta.hpp | 8 ++++---- include/stdexec/__detail/__run_loop.hpp | 8 ++++++-- 4 files changed, 25 insertions(+), 17 deletions(-) diff --git a/include/exec/sequence/merge_each.hpp b/include/exec/sequence/merge_each.hpp index 0c1c0dd54..2baada6e6 100644 --- a/include/exec/sequence/merge_each.hpp +++ b/include/exec/sequence/merge_each.hpp @@ -772,13 +772,13 @@ namespace exec { // else remove STDEXEC::__mconst>::__f, // concat to __mlist result - STDEXEC::__mconcat>::__f + STDEXEC::__mtry>>::__f >; }; template using __nested_sequences_from_item_type_t = STDEXEC::__minvoke< - __mtry<__gather_sequences_t<_Sequence, _Sender, _Env...>>, + __gather_sequences_t<_Sequence, _Sender, _Env...>, STDEXEC::__completion_signatures_of_t<_Sender, _Env...> >; @@ -1131,7 +1131,6 @@ namespace exec { > >; - template struct __subscribe_fn { template @@ -1206,8 +1205,9 @@ namespace exec { __compute::__nested_sequences_t<__child_of<_Self>, _Env...> >; - template _Self, class... _Env> + template static consteval auto get_completion_signatures() { + static_assert(sender_expr_for<_Self, merge_each_t>); // TODO: update this to use constant evaluation: using __result_t = __minvoke< __mtry_q<__completions_t>, @@ -1215,7 +1215,7 @@ namespace exec { __env_with_inplace_stop_token_result_t<_Env>... >; if constexpr (__ok<__result_t>) { - static_assert(__valid_completion_signatures<__result_t>); + static_assert(STDEXEC::__well_formed_completions<__result_t>); return __result_t(); } else { return STDEXEC::__throw_compile_time_error(__result_t()); diff --git a/include/exec/sequence_senders.hpp b/include/exec/sequence_senders.hpp index 4c1a75b31..62d41220a 100644 --- a/include/exec/sequence_senders.hpp +++ b/include/exec/sequence_senders.hpp @@ -392,15 +392,15 @@ namespace exec { requires STDEXEC::__well_formed_sender<_Item> auto __check_item(_Item*) -> STDEXEC::__msuccess; - template - requires STDEXEC::__merror<_Items> - auto __check_items(_Items*) -> _Items; - struct _SEQUENCE_GET_ITEM_TYPES_RESULT_IS_NOT_WELL_FORMED_ { }; template