39 #if __cpp_lib_apply >= 201603 46 std::get<Is>(std::declval<Tuple>())...)))
47 constexpr decltype(
auto) apply_impl(
48 F&&
f, Tuple&&
t, std::index_sequence<Is...>) {
51 template <
class Tuple_,
class Tuple = std::remove_reference_t<Tuple_>>
58 std::declval<Tuple>(),
60 constexpr decltype(
auto)
apply(F&&
f, Tuple&&
t) {
67 template <
class Cardinality,
bool IsFlow = false>
78 template <
class Cardinality,
bool IsFlow>
81 template <
class... AN>
84 (
requires Invocable<MakeReceiver, Ts...>)
86 std::tuple<Ts...> args)
const {
93 (
requires And<SemiMovable<Fns>...>&& Invocable<MakeReceiver, Ts...>&&
98 auto operator()(std::tuple<Ts...> args, Fns... fns)
const {
102 (
requires Receiver<Out>&& And<SemiMovable<Fns>...>)
110 template <PUSHMI_TYPE_CONSTRAINT(Sender) In>
119 template <class In, class FN>
123 (
requires Receiver<Out>&& Invocable<FN, Out>&&
124 SenderTo<In, ::folly::pushmi::invoke_result_t<const FN&, Out>>)
125 void operator()(In& in, Out out)
const {
129 template <
class In,
class FN>
133 (
requires Receiver<Out>&& Invocable<FN, Out>&&
134 ConstrainedSenderTo<In, ::folly::pushmi::invoke_result_t<const FN&, Out>>)
135 void operator()(In& in,
CV cv, Out out)
const {
139 template <
class In,
class SDSF>
143 (
requires Receiver<Out>&& Invocable<const SDSF&, In&, Out>)
144 void operator()(In& in, Out out)
const {
148 template <
class In,
class TSDSF>
152 (
requires Receiver<Out>&& Invocable<const TSDSF&, In&, CV, Out>)
153 void operator()(In& in,
CV cv, Out out)
const {
160 &¬ ConstrainedSender<In>))
166 (
requires ConstrainedSender<In>&& SemiMovable<FN>)
173 (
requires Sender<In>&& SemiMovable<SDSF>&& SemiMovable<TSDSF>
175 &¬ ConstrainedSender<
182 (
requires ConstrainedSender<In>&& SemiMovable<SDSF>&&
190 bool IsConstrained =
false,
214 auto operator()(In in, FN&&... fn)
const {
216 property_set_index_t<properties_t<In>, is_single<>>,
218 property_query_v<properties_t<In>,
is_time<>>,
219 property_query_v<properties_t<In>, is_flow<>>>;
220 return MakeSender{}(
std::move(in), (FN &&) fn...);
228 bool SingleSenderRequires,
229 bool TimeSingleSenderRequires)
230 (
requires Sender<In>&& Receiver<Out>)constexpr
bool sender_requires_from() {
232 return TimeSingleSenderRequires;
235 return SingleSenderRequires;
238 return SenderRequires;
248 template <
class... VN>
253 void operator()(Out out) {
261 template <
class... VN>
274 void operator()(Out out) {
282 auto operator()(
E e)
const {
292 void operator()(Out out) {
310 void operator()(Out out) {
318 auto operator()(Up up)
const {
328 auto operator()(In& in)
const {
346 void operator()(In& in) {
350 template <
class TP,
class Out>
356 void operator()(In& in) {
364 auto operator()(Out out)
const {
369 auto operator()(TP
tp, Out out)
const {
379 auto operator()(In& in)
const {
395 auto operator()(In& in)
const {
408 namespace extension_operators {
::folly::pushmi::invoke_result_t< MakeReceiver &, AN... > receiver_type
PUSHMI_INLINE_VAR constexpr struct folly::pushmi::invoke_fn invoke
requires Sender< In > &&SemiMovable< FN > PUSHMI_BROKEN_SUBSUMPTION not auto submit_transform_out(FN fn)
auto on_submit(Fns...fns) -> on_submit_fn< Fns... >
typename receiver_from_fn< In >::template receiver_type< AN... > receiver_type_t
std::chrono::steady_clock::time_point now()
constexpr detail::Map< Move > move
PUSHMI_INLINE_VAR constexpr __adl::set_error_fn set_error
—— Concurrent Priority Queue Implementation ——
PUSHMI_INLINE_VAR constexpr detail::top_fn top
PUSHMI_INLINE_VAR constexpr __adl::get_executor_fn executor
auto operator()(VN &&...vn) const
std::make_index_sequence< std::tuple_size< Tuple >::value > tupidxs
requires requires(::folly::pushmi::invoke(std::declval< F >(), std::get< Is >(std::declval< Tuple >())...))) const expr decltype(auto) apply_impl(F &&f
std::enable_if_t< PropertySet< PS > &&Property< P >, decltype(detail::__property_set_index_fn< P >(PS{}))> property_set_index_t
static const char *const value
#define PUSHMI_INLINE_VAR
PUSHMI_INLINE_VAR constexpr struct folly::pushmi::detail::sender_from_fn sender_from
PUSHMI_INLINE_VAR constexpr __adl::set_starting_fn set_starting
#define PUSHMI_IF_CONSTEXPR_RETURN(LIST)
PUSHMI_INLINE_VAR constexpr __adl::get_top_fn now
PUSHMI_INLINE_VAR constexpr __adl::get_top_fn top
PUSHMI_INLINE_VAR constexpr __adl::set_value_fn set_value
#define PUSHMI_TYPE_CONSTRAINT(...)
PUSHMI_INLINE_VAR constexpr __adl::do_submit_fn submit
PUSHMI_TEMPLATE(class In, class Out, bool SenderRequires, bool SingleSenderRequires, bool TimeSingleSenderRequires)(requires Sender< In > &&Receiver< Out >) constexpr bool sender_requires_from()
decltype(folly::pushmi::invoke(std::declval< F >(), std::declval< As >()...)) invoke_result_t
#define PUSHMI_BROKEN_SUBSUMPTION(...)
decltype(auto) constexpr apply(F &&func, Tuple &&tuple)
PUSHMI_INLINE_VAR constexpr __adl::set_done_fn set_done