13#include <rpp/observables/details/member_overload.hpp>
20struct distinct_until_changed_tag;
25template<constra
int::decayed_type Type, std::equivalence_relation<Type, Type> EqualityFn>
26struct distinct_until_changed_impl;
28template<constra
int::decayed_type Type,
typename SpecificObservable>
64 template<std::equivalence_relation<Type, Type> EqualityFn = std::equal_to<Type>>
65 auto distinct_until_changed(EqualityFn&& equality_fn = EqualityFn{})
const &
requires is_header_included<distinct_until_changed_tag, EqualityFn>
67 return static_cast<const SpecificObservable*
>(
this)->
template lift<Type>(
distinct_until_changed_impl<Type, std::decay_t<EqualityFn>>{std::forward<EqualityFn>(equality_fn)});
70 template<std::equivalence_relation<Type, Type> EqualityFn = std::equal_to<Type>>
71 auto distinct_until_changed(EqualityFn&& equality_fn = EqualityFn{}) &&
requires is_header_included<distinct_until_changed_tag, EqualityFn>
73 return std::move(*
static_cast<SpecificObservable*
>(
this)).template lift<Type>(
distinct_until_changed_impl <Type, std::decay_t<EqualityFn>>{std::forward<EqualityFn>(equality_fn)});
Definition: distinct_until_changed.hpp:54
Definition: member_overload.hpp:19