63 #if !defined(RXCPP_OPERATORS_RX_REPLAY_HPP)
64 #define RXCPP_OPERATORS_RX_REPLAY_HPP
66 #include "../rx-includes.hpp"
76 struct replay_invalid_arguments {};
79 struct replay_invalid :
public rxo::operator_base<replay_invalid_arguments<AN...>> {
80 using type = observable<replay_invalid_arguments<
AN...>, replay_invalid<
AN...>>;
83 using replay_invalid_t =
typename replay_invalid<
AN...>::type;
100 template<
class Observable,
105 class Multicast = rxo::detail::multicast<SourceValue, rxu::decay_t<Observable>, Subject>,
112 template<
class Observable,
117 class Multicast = rxo::detail::multicast<SourceValue, rxu::decay_t<Observable>, Subject>,
124 template<
class Observable,
class Coordination,
130 class Multicast = rxo::detail::multicast<SourceValue, rxu::decay_t<Observable>, Subject>,
134 return Result(Multicast(std::forward<Observable>(o), Subject(std::forward<Coordination>(cn), cs)));
137 template<
class Observable,
class Count,
140 std::is_integral<Count>>,
143 class Multicast = rxo::detail::multicast<SourceValue, rxu::decay_t<Observable>, Subject>,
150 template<
class Observable,
class Count,
class Coordination,
153 std::is_integral<Count>,
157 class Multicast = rxo::detail::multicast<SourceValue, rxu::decay_t<Observable>, Subject>,
161 return Result(Multicast(std::forward<Observable>(o), Subject(
count, std::forward<Coordination>(cn), cs)));
164 template<
class Observable,
class Duration,
171 class Multicast = rxo::detail::multicast<SourceValue, rxu::decay_t<Observable>, Subject>,
175 return Result(Multicast(std::forward<Observable>(o), Subject(std::forward<Duration>(d),
identity_current_thread(), cs)));
178 template<
class Observable,
class Duration,
class Coordination,
186 class Multicast = rxo::detail::multicast<SourceValue, rxu::decay_t<Observable>, Subject>,
190 return Result(Multicast(std::forward<Observable>(o), Subject(std::forward<Duration>(d), std::forward<Coordination>(cn), cs)));
193 template<
class Observable,
class Count,
class Duration,
197 std::is_integral<Count>,
201 class Multicast = rxo::detail::multicast<SourceValue, rxu::decay_t<Observable>, Subject>,
208 template<
class Observable,
class Count,
class Duration,
class Coordination,
212 std::is_integral<Count>,
217 class Multicast = rxo::detail::multicast<SourceValue, rxu::decay_t<Observable>, Subject>,
221 return Result(Multicast(std::forward<Observable>(o), Subject(
count, std::forward<Duration>(d), std::forward<Coordination>(cn), cs)));
224 template<
class...
AN>
225 static operators::detail::replay_invalid_t<
AN...>
member(
AN...) {
228 static_assert(
sizeof...(
AN) == 10000,
"replay takes (optional Count, optional Duration, optional Coordination, optional CompositeSubscription)");