14#ifndef ZYPPNG_MONADIC_LIFT_H_INCLUDED
15#define ZYPPNG_MONADIC_LIFT_H_INCLUDED
21#include <zypp-core/zyppng/meta/Functional>
22#include <zypp-core/zyppng/pipelines/AsyncResult>
27 template <
typename LiftedFun,
typename extra =
void >
39 return std::make_pair(
std::invoke(
_fun, std::move(data.first) ), std::move(data.second) );
45 template <
typename AsyncOp >
46 struct lifter<
std::shared_ptr<AsyncOp>,
std::void_t< std::enable_if_t< zyppng::detail::is_async_op<AsyncOp>::value > > > {
62 return std::move(data.first)
64 | [ other = std::move(data.second)](
auto &&
res )
mutable {
65 return std::make_pair( std::forward<
decltype (
res)>(
res), std::move(other) );
73 template<
typename Fun >
Reference counted access to a Tp object calling a custom Dispose function when the last AutoDispose h...
std::enable_if< std::is_member_pointer< typenamestd::decay< Functor >::type >::value, typenamestd::result_of< Functor &&(Args &&...)>::type >::typ invoke)(Functor &&f, Args &&... args)
typename make_void< Ts... >::type void_t
typename result_of< T >::type result_of_t
std::shared_ptr< AsyncOp > LiftedFun
auto operator()(std::pair< T1, T2 > &&data)
lifter(lifter &&)=default
lifter(lifter &&)=default
Ret operator()(std::pair< T1, T2 > &&data)