25 template <
class E,
class CV,
class... VN>
31 template <
class Wrapped>
46 static constexpr vtable
const noop_ {};
48 template <
class Wrapped>
55 delete static_cast<Wrapped
const*
>(src.pobj_);
62 executor(*static_cast<Wrapped*>(src.pobj_))};
73 template <
class Wrapped>
79 new (dst->buffer_) Wrapped(
80 std::move(*static_cast<Wrapped*>((
void*)src.buffer_)));
81 static_cast<Wrapped
const*
>((
void*)src.buffer_)->~Wrapped();
88 *static_cast<Wrapped*>((
void*)src.buffer_))};
92 *static_cast<Wrapped*>((
void*)src.buffer_),
101 template <
class T,
class U = std::decay_t<T>>
120 vptr_->op_(
data_,
nullptr);
128 return vptr_->top_(
data_);
131 return vptr_->executor_(
data_);
139 template <
class E,
class CV,
class... VN>
143 template<
class SF,
class ZF,
class EXF>
166 (
requires Regular<CV> && Receiver<Out> &&
167 Invocable<SF&, CV, Out>)
173 template <PUSHMI_TYPE_CONSTRAINT(ConstrainedSender<is_single<>>) Data,
class DSF,
class DZF,
class DEXF>
175 requires Invocable<DZF&, Data&> && Invocable<DEXF&, Data&>
199 (
requires Regular<CV> && Receiver<Out> &&
200 Invocable<DSF&, Data&, CV, Out>)
221 auto operator()(SF sf)
const {
226 auto operator()(SF sf, EXF exf)
const {
231 auto operator()(SF sf, EXF exf, ZF zf)
const {
235 (
requires ConstrainedSender<Data, is_single<>>)
236 auto operator()(
Data d)
const {
240 (
requires ConstrainedSender<Data, is_single<>>)
241 auto operator()(
Data d, DSF sf)
const {
245 (
requires ConstrainedSender<Data, is_single<>> && Invocable<DEXF&, Data&>)
246 auto operator()(
Data d, DSF sf, DEXF exf)
const {
251 (
requires ConstrainedSender<Data, is_single<>> && Invocable<DZF&, Data&> && Invocable<DEXF&, Data&>)
252 auto operator()(
Data d, DSF sf, DEXF exf, DZF zf)
const {
260 #if __cpp_deduction_guides >= 201703 276 (
requires ConstrainedSender<Data, is_single<>>)
280 (
requires ConstrainedSender<Data, is_single<>> && Invocable<DEXF&, Data&>)
284 (
requires ConstrainedSender<Data, is_single<>> && Invocable<DZF&, Data&> && Invocable<DEXF&, Data&>)
static constexpr vtable const noop_
~any_constrained_single_sender()
constexpr constrained_single_sender(Data data, DSF sf, DEXF exf, DZF zf)
constexpr constrained_single_sender(SF sf)
any_constrained_executor< E, CV > executor()
char buffer_[sizeof(std::promise< int >)]
constexpr detail::Map< Move > move
any_constrained_single_sender(Wrapped obj, std::true_type) noexcept
constexpr constrained_single_sender(Data data, DSF sf, DEXF exf=DEXF{})
—— Concurrent Priority Queue Implementation ——
constexpr constrained_single_sender(Data data)
any_constrained_single_sender()=default
static any_constrained_executor< E, CV > s_executor(data &)
requires E e noexcept(noexcept(s.error(std::move(e))))
constexpr constrained_single_sender(SF sf, EXF exf, ZF zf)
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
bool_constant< true > true_type
std::enable_if_t<!std::is_same< U, any_constrained_single_sender >::value, U > wrapped_t
any_constrained_single_sender(Wrapped obj, std::false_type)
static constexpr bool insitu()
constexpr constrained_single_sender(SF sf, EXF exf)
constexpr auto data(C &c) -> decltype(c.data())
union folly::pushmi::any_constrained_single_sender::data data_
any_constrained_single_sender & operator=(any_constrained_single_sender &&that) noexcept
static void s_op(data &, data *)
static void s_submit(data &, CV, any_receiver< E, VN... >)
static const char *const value
#define PUSHMI_INLINE_VAR
PUSHMI_INLINE_VAR constexpr struct folly::pushmi::make_constrained_single_sender_fn make_constrained_single_sender
std::integral_constant< bool, B > bool_
void submit(CV at, any_receiver< E, VN... > out)
requires requires(detail::apply_impl(std::declval< F >(), std::declval< Tuple >(), detail::tupidxs< Tuple >{}))) const expr decltype(auto) apply(F &&f
T exchange(T &obj, U &&new_value)
PUSHMI_TEMPLATE(class E=std::exception_ptr, class Wrapped)(requires Sender< detail
PUSHMI_INLINE_VAR constexpr __adl::get_top_fn top
requires Regular< CV > &&Receiver< Out > &&Invocable< DSF &, Data &, CV, Out > void submit(CV cv, Out out)
void(* op_)(data &, data *)
bool_constant< false > false_type
requires Regular< CV > &&Receiver< Out > &&Invocable< SF &, CV, Out > void submit(CV cv, Out out)
requires ConstrainedSenderTo< wrapped_t< Wrapped >, any_receiver< E, VN... > > any_constrained_single_sender(Wrapped obj) noexcept(insitu< Wrapped >())
void swap(SwapTrackingAlloc< T > &, SwapTrackingAlloc< T > &)
property_set_insert_t< properties_t< Data >, property_set< is_single<>>> properties
#define PUSHMI_BROKEN_SUBSUMPTION(...)
any_constrained_single_sender(any_constrained_single_sender &&that) noexcept