13#include <rpp/observables/constraints.hpp>
14#include <rpp/observables/details/member_overload.hpp>
23template<constra
int::decayed_type Type>
26template<constra
int::decayed_type Type, constra
int::observable_of_type<Type> ... TObservables>
27auto merge_with_impl(TObservables&&... observables);
29template<constra
int::decayed_type Type,
typename SpecificObservable>
71 template<
typename ...Args>
74 return static_cast<const SpecificObservable*
>(
this)->
template lift<utils::extract_observable_type_t<Type>>(
merge_impl<Type>{});
77 template<
typename ...Args>
80 return std::move(*
static_cast<SpecificObservable*
>(
this)).template lift<utils::extract_observable_type_t<Type>>(
merge_impl<Type>{});
118 template<constra
int::observable_of_type<Type> ...TObservables>
119 auto merge_with(TObservables&&... observables)
const&
requires (is_header_included<merge_tag, TObservables...>&&
sizeof...(TObservables) >= 1)
121 return merge_with_impl<Type>(
static_cast<const SpecificObservable*
>(
this)->as_dynamic(), std::forward<TObservables>(observables).as_dynamic()...);
124 template<constra
int::observable_of_type<Type> ...TObservables>
125 auto merge_with(TObservables&&... observables) &&
requires (is_header_included<merge_tag, TObservables...> &&
sizeof...(TObservables) >= 1)
127 return merge_with_impl<Type>(std::move(*
static_cast<SpecificObservable*
>(
this)).as_dynamic(), std::forward<TObservables>(observables).as_dynamic()...);
Definition: constraints.hpp:19
Definition: member_overload.hpp:19