1#ifndef KOKKOS_EXECUTION_TESTS_UTILS_CHECK_SCHEDULER_TYPE_HPP
2#define KOKKOS_EXECUTION_TESTS_UTILS_CHECK_SCHEDULER_TYPE_HPP
22template <stdexec::sender Sndr,
typename Tag, stdexec::scheduler Schd>
25template <
typename Tag, stdexec::scheduler Schd>
29 return stdexec::__closure(*
this);
32 template <stdexec::sender Sndr>
39template <stdexec::sender Sndr,
typename Tag, stdexec::scheduler Schd>
47 template <stdexec::__decays_to<CheckSchedulerTypeSender> Self, stdexec::receiver Rcvr>
49 constexpr STDEXEC_EXPLICIT_THIS_BEGIN(
50 auto connect)(
this Self&& self, Rcvr rcvr)
54 return stdexec::connect(std::forward<Self>(self).
sndr, std::move(rcvr));
56 STDEXEC_EXPLICIT_THIS_END(connect)
58 template <stdexec::receiver Rcvr>
64 std::same_as<std::remove_cvref_t<schd_t>, Schd>,
65 "Scheduler type mismatch: completion scheduler doesn't match expected type.");
69 else if constexpr (stdexec::__queryable_with<stdexec::env_of_t<Rcvr>, stdexec::get_scheduler_t>) {
70 using schd_t = stdexec::__query_result_t<stdexec::env_of_t<Rcvr>, stdexec::get_scheduler_t>;
72 std::same_as<std::remove_cvref_t<schd_t>, Schd>,
73 "Scheduler type mismatch: receiver scheduler doesn't match expected type.");
76 static_assert(
sizeof(Rcvr) == 0,
"No scheduler found.");
84template <
typename Tag, stdexec::scheduler Schd>
#define KOKKOS_EXECUTION_IMPL_FORWARDING_ATTRIBUTES_GET_ENV(_type_, _obj_)
#define KOKKOS_EXECUTION_COMPL_SIGS_KEEP(_decayed_self_type_, _sndr_type_)
std::invoke_result_t< stdexec::get_completion_scheduler_t< Tag >, stdexec::env_of_t< Sndr >, Env... > completion_scheduler_of_t
Retrieve the completion scheduler for a given completion tag.
constexpr check_scheduler_type_t< Tag, Schd > check_scheduler_type
static consteval bool check_scheduler_type()
stdexec::sender_tag sender_concept
constexpr auto operator()(Sndr &&sndr) const
constexpr auto operator()() const noexcept
#define KOKKOS_EXECUTION_IMPL_MEMBER_CVREF_T(_Self_, _member_)
Yields the type of member _member_ as accessed from expression _Self_, preserving the cv and ref qual...