14#ifndef ZYPPNG_MONADIC_AWAIT_H_INCLUDED
15#define ZYPPNG_MONADIC_AWAIT_H_INCLUDED
18#include <zypp-core/zyppng/pipelines/AsyncResult>
19#include <zypp-core/zyppng/base/Signals>
25 template <
typename T,
typename SigGetter>
struct AwaitImpl;
27 template <
typename ArgType,
typename SigR,
typename ...SigT >
38 _req = std::move(req);
43 template <
typename RetType = SigR >
49 template <
typename RetType = SigR >
56 std::shared_ptr<ArgType>
_req;
63 typename SignalGetter >
64 auto await ( SignalGetter &&sigGet )
66 return std::make_shared<detail::AwaitImpl<T, SignalGetter>>( std::forward<SignalGetter>(sigGet) );
bool operator()(const zypp::Arch &lhs, const zypp::Arch &rhs) const
Default order for std::container based Arch::compare.
typename enable_if< B, T >::type enable_if_t
std::enable_if< std::is_member_pointer< typenamestd::decay< Functor >::type >::value, typenamestd::result_of< Functor &&(Args &&...)>::type >::type invoke(Functor &&f, Args &&... args)
auto await(SignalGetter &&sigGet)
void setReady(value_type &&val)
std::shared_ptr< ArgType > _req
SignalProxy< SigR(SigT...)>(ArgType::*)() SigGetter
std::enable_if_t< std::is_same_v< void, RetType >, RetType > sigHandler(SigT...)
std::enable_if_t< !std::is_same_v< void, RetType >, RetType > sigHandler(SigT...)