Skip to content

Commit d744c0b

Browse files
committed
fixed a problem with when_all missing set_stopped completions
1 parent c0df5e9 commit d744c0b

File tree

2 files changed

+9
-1
lines changed

2 files changed

+9
-1
lines changed

include/beman/execution/detail/when_all.hpp

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@
3535
#include <beman/execution/detail/transform_sender.hpp>
3636
#include <beman/execution/detail/type_list.hpp>
3737
#include <beman/execution/detail/value_types_of_t.hpp>
38+
#include <beman/execution/detail/sends_stopped.hpp>
3839

3940
#include <concepts>
4041
#include <exception>
@@ -250,7 +251,11 @@ struct completion_signatures_for_impl<
250251
type;
251252
using error_types = ::beman::execution::detail::meta::unique<
252253
::beman::execution::detail::meta::combine<::beman::execution::error_types_of_t<Sender, Env, error_comps>...>>;
253-
using type = ::beman::execution::detail::meta::combine<value_types, error_types>;
254+
using stopped_types =
255+
::std::conditional_t<(false || ... || ::beman::execution::sends_stopped<Sender, Env>),
256+
::beman::execution::completion_signatures<::beman::execution::set_stopped_t()>,
257+
::beman::execution::completion_signatures<>>;
258+
using type = ::beman::execution::detail::meta::combine<value_types, error_types, stopped_types>;
254259
};
255260
} // namespace beman::execution::detail
256261

src/beman/execution/CMakeLists.txt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,8 @@ target_sources(
2727
${PROJECT_SOURCE_DIR}/include/beman/execution/execution.hpp
2828
${PROJECT_SOURCE_DIR}/include/beman/execution/functional.hpp
2929
${PROJECT_SOURCE_DIR}/include/beman/execution/stop_token.hpp
30+
${PROJECT_SOURCE_DIR}/include/beman/execution26/execution.hpp
31+
${PROJECT_SOURCE_DIR}/include/beman/execution26/stop_token.hpp
3032
PUBLIC FILE_SET
3133
${TARGET_NAME}_detail_headers
3234
TYPE
@@ -47,6 +49,7 @@ target_sources(
4749
${PROJECT_SOURCE_DIR}/include/beman/execution/detail/basic_receiver.hpp
4850
${PROJECT_SOURCE_DIR}/include/beman/execution/detail/basic_sender.hpp
4951
${PROJECT_SOURCE_DIR}/include/beman/execution/detail/basic_state.hpp
52+
${PROJECT_SOURCE_DIR}/include/beman/execution/detail/bulk.hpp
5053
${PROJECT_SOURCE_DIR}/include/beman/execution/detail/call_result_t.hpp
5154
${PROJECT_SOURCE_DIR}/include/beman/execution/detail/callable.hpp
5255
${PROJECT_SOURCE_DIR}/include/beman/execution/detail/check_type_alias_exist.hpp

0 commit comments

Comments
 (0)