1#ifndef KOKKOS_EXECUTION_TESTS_UTILS_CHECK_RCVR_ENV_QUERYABLE_WITH_HPP
2#define KOKKOS_EXECUTION_TESTS_UTILS_CHECK_RCVR_ENV_QUERYABLE_WITH_HPP
20template <
bool IsQueryable, stdexec::sender Sndr,
typename... Queries>
23template <
bool IsQueryable,
typename... Queries>
27 return stdexec::__closure(*
this);
30 template <stdexec::sender Sndr>
37template <
bool IsQueryable, stdexec::sender Sndr,
typename... Queries>
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>
59 if constexpr (IsQueryable) {
61 (stdexec::__queryable_with<stdexec::env_of_t<Rcvr>, Queries> && ...),
62 "The receiver environment is not queryable with at least one query from the given set of queries.");
65 ((!stdexec::__queryable_with<stdexec::env_of_t<Rcvr>, Queries>) && ...),
66 "The receiver environment is queryable with at least one query from the given set of queries.");
74template <
typename... Queries>
77template <
typename... Queries>
#define KOKKOS_EXECUTION_IMPL_FORWARDING_ATTRIBUTES_GET_ENV(_type_, _obj_)
#define KOKKOS_EXECUTION_COMPL_SIGS_KEEP(_sndr_type_)
constexpr check_rcvr_env_queryable_with_t< false, Queries... > check_rcvr_env_not_queryable_with
constexpr check_rcvr_env_queryable_with_t< true, Queries... > check_rcvr_env_queryable_with
static consteval bool check_rcvr_env()
constexpr auto connect(Rcvr rcvr) const &noexcept(stdexec::__nothrow_connectable< const Sndr &, Rcvr && >)
stdexec::sender_t sender_concept
constexpr auto connect(Rcvr rcvr) &&noexcept(stdexec::__nothrow_connectable< Sndr &&, Rcvr && >)
constexpr auto operator()() const noexcept
constexpr auto operator()(Sndr &&sndr) const