13#include <rpp/observables/constraints.hpp>
14#include <rpp/observables/details/member_overload.hpp>
24template<constra
int::decayed_type Type>
27template<constra
int::decayed_type Type, constra
int::observable_of_type<Type> ... TObservables>
28auto concat_with_impl(TObservables&&... observables);
30template<constra
int::decayed_type Type,
typename SpecificObservable>
70 template<
typename ...Args>
73 return static_cast<const SpecificObservable*
>(
this)->
template lift<utils::extract_observable_type_t<Type>>(
concat_impl<Type>{});
76 template<
typename ...Args>
79 return std::move(*
static_cast<SpecificObservable*
>(
this)).template lift<utils::extract_observable_type_t<Type>>(
concat_impl<Type>{});
116 template<constra
int::observable_of_type<Type> ...TObservables>
117 auto concat_with(TObservables&&... observables)
const&
requires (is_header_included<concat_tag, TObservables...> &&
sizeof...(TObservables) >= 1)
119 return concat_with_impl<Type>(
static_cast<const SpecificObservable*
>(
this)->as_dynamic(), std::forward<TObservables>(observables).as_dynamic()...);
122 template<constra
int::observable_of_type<Type> ...TObservables>
123 auto concat_with(TObservables&&... observables) &&
requires (is_header_included<concat_tag, TObservables...> &&
sizeof...(TObservables) >= 1)
125 return concat_with_impl<Type>(std::move(*
static_cast<SpecificObservable*
>(
this)).as_dynamic(), std::forward<TObservables>(observables).as_dynamic()...);
Definition: constraints.hpp:19
Definition: concat.hpp:128
Definition: member_overload.hpp:19