25 template <
class PE,
class E,
class... VN>
31 template <
class Wrapped>
47 template <
class Wrapped>
71 template <
class Wrapped>
79 static_cast<Wrapped
const*
>((
void*)src.
buffer_)->~Wrapped();
83 *static_cast<Wrapped*>((
void*)src.
buffer_))};
96 template <
class T,
class U = std::decay_t<T>>
109 (
requires FlowSender<wrapped_t<Wrapped>, is_single<>>)
129 template <
class PE,
class E,
class... VN>
133 template <
class SF,
class EXF>
149 (
requires Receiver<Out> && Invocable<SF&, Out>)
180 lazy::Invocable<DSF&, Data&, Out>))
201 auto operator()(SF sf)
const {
207 auto operator()(SF sf, EXF exf)
const {
212 auto operator()(
Data d)
const {
216 (
requires Sender<Data, is_single<>, is_flow<>>)
217 auto operator()(
Data d, DSF sf)
const {
221 (
requires Sender<Data, is_single<>, is_flow<>> && Invocable<DEXF&, Data&>)
222 auto operator()(
Data d, DSF sf, DEXF exf)
const {
230 #if __cpp_deduction_guides >= 201703 247 (
requires Sender<Data, is_single<>, is_flow<>>)
251 (
requires Sender<Data, is_single<>, is_flow<>> && Invocable<DEXF&, Data&>)
requires PUSHMI_EXP(lazy::Receiver< Out > PUSHMI_AND lazy::Invocable< DSF &, Data &, Out >)) void submit(Out out)
static any_executor< E > s_executor(data &)
constexpr flow_single_sender(Data data, DSF sf, DEXF exf)
any_flow_single_sender(Wrapped obj, std::false_type)
any_executor< E >(* executor_)(data &)
requires FlowSender< wrapped_t< Wrapped >, is_single<> > any_flow_single_sender(Wrapped obj) noexcept(insitu< Wrapped >())
any_flow_single_sender(Wrapped obj, std::true_type) noexcept
static constexpr bool insitu()
std::enable_if_t< PropertySet< __properties_t< property_set_traits< T >>>, __properties_t< property_set_traits< T >>> properties_t
constexpr detail::Map< Move > move
std::enable_if_t<!std::is_same< U, any_flow_single_sender >::value, U > wrapped_t
any_flow_single_sender(any_flow_single_sender &&that) noexcept
—— Concurrent Priority Queue Implementation ——
requires E e noexcept(noexcept(s.error(std::move(e))))
property_set_insert_t< properties_t< Data >, property_set< is_sender<>, is_flow<>, is_single<>>> properties
static constexpr vtable const noop_
PUSHMI_INLINE_VAR constexpr __adl::get_executor_fn executor
typename std::enable_if_t< PropertySet< PS0 > &&PropertySet< PS1 >, detail::property_set_insert< PS0, PS1 >>::type property_set_insert_t
void submit(any_flow_receiver< PE, std::ptrdiff_t, E, VN... > out)
bool_constant< true > true_type
void(* op_)(data &, data *)
any_executor< E > executor()
void(* submit_)(data &, any_flow_receiver< PE, std::ptrdiff_t, E, VN... >)
constexpr auto data(C &c) -> decltype(c.data())
static const char *const value
constexpr flow_single_sender(SF sf, EXF exf)
static void s_op(data &, data *)
#define PUSHMI_INLINE_VAR
std::integral_constant< bool, B > bool_
char buffer_[sizeof(std::tuple< VN... >)]
constexpr flow_single_sender(Data data)
requires requires(detail::apply_impl(std::declval< F >(), std::declval< Tuple >(), detail::tupidxs< Tuple >{}))) const expr decltype(auto) apply(F &&f
union folly::pushmi::any_flow_single_sender::data data_
T exchange(T &obj, U &&new_value)
PUSHMI_TEMPLATE(class E=std::exception_ptr, class Wrapped)(requires Sender< detail
constexpr flow_single_sender(SF sf)
bool_constant< false > false_type
#define PUSHMI_TYPE_CONSTRAINT(...)
static void s_submit(data &, any_flow_receiver< PE, std::ptrdiff_t, E, VN... >)
constexpr flow_single_sender(Data data, DSF sf)
any_flow_single_sender()=default
void swap(SwapTrackingAlloc< T > &, SwapTrackingAlloc< T > &)
#define PUSHMI_BROKEN_SUBSUMPTION(...)
any_flow_single_sender & operator=(any_flow_single_sender &&that) noexcept
requires Receiver< Out > &&Invocable< SF &, Out > void submit(Out out)
~any_flow_single_sender()
PUSHMI_INLINE_VAR constexpr struct folly::pushmi::make_flow_single_sender_fn make_flow_single_sender