1#ifndef KOKKOS_EXECUTION_IMPL_CONTINUES_ON_HPP
2#define KOKKOS_EXECUTION_IMPL_CONTINUES_ON_HPP
7#include "exec/fork_join.hpp"
13template <
typename ChannelTag,
typename DomainType,
typename Sndr,
typename Env>
17 std::bool_constant<std::same_as<DomainType, stdexec::__detail::__completing_domain_t<ChannelTag, T, Env>>>;
21 stdexec::__mapply<stdexec::__many_of<stdexec::__q<completes_on_domain>>, stdexec::__children_of<Sndr>>
::value;
25template <
typename Sndr,
typename Tag>
27 requires stdexec::__nbr_children_of<Sndr> == 1;
28 typename stdexec::tag_of_t<stdexec::__child_of<Sndr>>;
29 requires std::same_as<stdexec::tag_of_t<stdexec::__child_of<Sndr>>, Tag>;
33template <
typename ChannelTag,
typename DomainType,
typename Sndr,
typename Env>
35 static constexpr bool value =
false;
38template <
typename ChannelTag,
typename DomainType, has_single_child_with_tag<stdexec::when_all_t> Sndr,
typename Env>
41 using child_t = stdexec::__child_of<Sndr>;
47template <
typename ChannelTag,
typename DomainType,
typename Sndr,
typename Env>
52template <
typename ChannelTag,
typename DomainType,
typename Sndr,
typename Env>
54 static constexpr bool value =
false;
57template <
typename ChannelTag,
typename DomainType, has_single_child_with_tag<exec::fork_join_t> Sndr,
typename Env>
59 using child_t = stdexec::__child_of<Sndr>;
61 static consteval bool check() noexcept {
62 using _closures_t = stdexec::__data_of<child_t>;
63 using _child_sndr_t = stdexec::__child_of<child_t>;
64 using _domain_t = stdexec::__completion_domain_of_t<ChannelTag, _child_sndr_t, Env>;
65 using _child_t = stdexec::__copy_cvref_t<child_t, _child_sndr_t>;
66 using _child_completions_t = stdexec::__completion_signatures_of_t<_child_t, stdexec::__fwd_env_t<Env>>;
67 using _sndr_t = exec::fork_join_impl_t::_when_all_sndr_t<_child_completions_t, _closures_t, _domain_t>;
75template <
typename ChannelTag,
typename DomainType,
typename Sndr,
typename Env>
Check that a sender has a single child with a given tag.
#define KOKKOS_EXECUTION_STDEXEC_PRAGMA_DIAGNOSTIC_IGNORED
Basic list of ignored diagnostics when including anything from stdexec.
constexpr bool has_when_all_child_with_at_least_one_child_completing_on_v
constexpr bool has_fork_join_child_with_at_least_one_child_completing_on_v
Determine if at least one of the children of the sender completes on the given domain.
static constexpr bool value
std::bool_constant< std::same_as< DomainType, stdexec::__detail::__completing_domain_t< ChannelTag, T, Env > > > completes_on_domain
Determine if the sender has a single exec::fork_join child, that has at least one branch completing o...
static constexpr bool value
static constexpr bool value
stdexec::__child_of< Sndr > child_t
static consteval bool check() noexcept
Determine if the sender has a single stdexec::when_all child, that has at least one branch completing...
static constexpr bool value
static constexpr bool value