1#ifndef KOKKOS_EXECUTION_TESTS_UTILS_CHECK_SCHEDULER_TYPE_HPP
2#define KOKKOS_EXECUTION_TESTS_UTILS_CHECK_SCHEDULER_TYPE_HPP
20template <stdexec::sender Sndr,
typename Tag, stdexec::scheduler Schd>
23template <
typename Tag, stdexec::scheduler Schd>
27 return stdexec::__closure(*
this);
30 template <stdexec::sender Sndr>
37template <stdexec::sender Sndr,
typename Tag, stdexec::scheduler Schd>
45 template <stdexec::receiver Rcvr>
46 constexpr auto connect(Rcvr rcvr) &&
noexcept(stdexec::__nothrow_connectable<Sndr&&, Rcvr&&>) {
48 return stdexec::connect(std::forward<Sndr>(
sndr), std::move(rcvr));
51 template <stdexec::receiver Rcvr>
52 constexpr auto connect(Rcvr rcvr)
const &
noexcept(stdexec::__nothrow_connectable<const Sndr&, Rcvr&&>) {
54 return stdexec::connect(
sndr, std::move(rcvr));
57 template <stdexec::receiver Rcvr>
61 using schd_t = stdexec::__completion_scheduler_of_t<Tag, Sndr, stdexec::env_of_t<Rcvr>>;
63 std::same_as<std::remove_cvref_t<schd_t>, Schd>,
64 "Scheduler type mismatch: completion scheduler doesn't match expected type.");
68 else if constexpr (stdexec::__queryable_with<stdexec::env_of_t<Rcvr>, stdexec::get_scheduler_t>) {
69 using schd_t = stdexec::__query_result_t<stdexec::env_of_t<Rcvr>, stdexec::get_scheduler_t>;
71 std::same_as<std::remove_cvref_t<schd_t>, Schd>,
72 "Scheduler type mismatch: receiver scheduler doesn't match expected type.");
75 static_assert(
sizeof(Rcvr) == 0,
"No scheduler found.");
83template <
typename Tag, stdexec::scheduler Schd>
#define KOKKOS_EXECUTION_IMPL_FORWARDING_ATTRIBUTES_GET_ENV(_type_, _obj_)
#define KOKKOS_EXECUTION_COMPL_SIGS_KEEP(_sndr_type_)
constexpr check_scheduler_type_t< Tag, Schd > check_scheduler_type
static consteval bool check_scheduler_type()
constexpr auto connect(Rcvr rcvr) &&noexcept(stdexec::__nothrow_connectable< Sndr &&, Rcvr && >)
constexpr auto connect(Rcvr rcvr) const &noexcept(stdexec::__nothrow_connectable< const Sndr &, Rcvr && >)
stdexec::sender_t sender_concept
constexpr auto operator()(Sndr &&sndr) const
constexpr auto operator()() const noexcept