12#include <rpp/observers/fwd.hpp>
14#include <rpp/observables/details/disposables_strategy.hpp>
15#include <rpp/utils/constraints.hpp>
16#include <rpp/utils/utils.hpp>
18namespace rpp::constraint
34 template<
typename S,
typename T>
37 strategy.subscribe(std::move(
observer))
38 } -> std::same_as<void>;
40 typename S::value_type;
41 typename S::optimal_disposables_strategy;
46namespace rpp::details::observables
48 template<rpp::constra
int::decayed_type Type>
51 template<rpp::constra
int::decayed_type Type, rpp::constra
int::observable_strategy<Type> Strategy>
54 template<rpp::constra
int::decayed_type Type>
57 using value_type = Type;
60 consteval static void subscribe(
const auto&) {}
64namespace rpp::details::observables
66 template<
typename TStrategy,
typename... TStrategies>
72 template<rpp::constra
int::decayed_type Type, rpp::constra
int::observable_strategy<Type> Strategy>
77namespace rpp::constraint
85 template<rpp::constra
int::observable OriginalObservable,
typename Subject>
92 using extract_observable_type_t =
typename rpp::utils::extract_base_type_params_t<T, rpp::observable>::template type_at_index_t<0>;
95namespace rpp::constraint
97 template<
typename T,
typename Type>
100 template<
typename TObservable,
typename... TObservables>
108 template<
typename Op,
typename Type>
111 op.subscribe(std::move(
observer), chain)
120 template<
typename Op,
typename Type>
123 op.template lift<Type>(std::move(
observer))
133 template<
typename Op,
typename Type,
typename DisposableStrategy>
136 op.template lift_with_disposables_strategy<Type, DisposableStrategy>(std::move(
observer))
140 template<
typename Op,
typename Type>
142 typename std::decay_t<Op>::template operator_traits<Type>;
143 typename std::decay_t<Op>::template operator_traits<Type>::result_type;
146 template<
typename Op>
148 typename std::decay_t<Op>::template updated_optimal_disposables_strategy<typename details::observables::default_disposables_strategy>;
162 template<
typename Op,
typename Type,
typename DisposableStrategy>
172 template<constra
int::decayed_type Type>
175 template<constra
int::decayed_type Type, constra
int::observable_strategy<Type> Strategy>
178 template<constra
int::decayed_type KeyType, constra
int::decayed_type Type, constra
int::observable_strategy<Type> Strategy>
181 template<constra
int::decayed_type Type, rpp::constra
int::observable_of_type<Type>... Observables>
Extension over rpp::observable with set of blocking operators - it waits till completion of underlyin...
Definition fwd.hpp:176
Extension over raw observable with ability to be manually connected at any time or ref_counting (shar...
Definition fwd.hpp:86
Type-erased version of the rpp::observable. Any observable can be converted to dynamic_observable via...
Definition fwd.hpp:173
Extension over rpp::observable for some "subset" of values from original observable grouped by some k...
Definition grouped_observable.hpp:28
Base class for any observable used in RPP. It handles core callbacks of observable.
Definition observable.hpp:38
Base class for any observer used in RPP. It handles core callbacks of observers. Objects of this clas...
Definition observer.hpp:172
Extension over rpp::observable to provide ability statically keep one of multiple observables.
Definition variant_observable.hpp:54
A concept that defines the requirements for an observable strategy.
Definition fwd.hpp:35
Same as rpp::constraint::operator_lift but with custom disposables logic. For example,...
Definition fwd.hpp:134
Accept downstream observer and return new upstream (of type Type) observer.
Definition fwd.hpp:121
Simple operator defining logic how to subscribe passed observer to passed observable....
Definition fwd.hpp:109
Definition disposables_strategy.hpp:42
Definition disposables_strategy.hpp:29