@@ -76,7 +76,7 @@ template <typename T> class OperatorNoReset;
7676template <typename T> class OperatorReset ;
7777
7878template <typename T> class TransformationSelect ;
79- template <typename T > class TransformationReduce ;
79+ template <typename Torig, typename Tdest > class TransformationReduce ;
8080template <typename Torig, typename Tdest> class TransformationCast ;
8181template <typename Torig, typename Tdest> class TransformationMap ;
8282template <typename T> class TransformationLimit ;
@@ -182,7 +182,7 @@ class Observable : IObservable<T>, IResetable<T>
182182 template <class Tdest > TransformationCast<T, Tdest>& Cast ();
183183 template <class Tdest > TransformationMap<T, Tdest>& Select (ReactiveMap<T, Tdest> map);
184184 template <class Tdest > TransformationMap<T, Tdest>& Map (ReactiveMap<T, Tdest> map);
185- TransformationReduce<T>& Reduce (ReactiveCompound<T > function);
185+ template < class Tdest > TransformationReduce<T, Tdest >& Reduce (ReactiveReduce<T, Tdest > function, Tdest init = Tdest() );
186186 TransformationUpperLimit<T>& LimitUpper (T upperLimit);
187187 TransformationLowerLimit<T>& LimitLower (T lowerLimit);
188188 TransformationLimit<T>& Limit (T lowerLimit, T upperLimit);
@@ -473,9 +473,10 @@ auto Observable<T>::Select(ReactiveMap<T, Tdest> map) -> TransformationMap<T, Td
473473
474474
475475template <typename T>
476- auto Observable<T>::Reduce(ReactiveCompound<T> function) -> TransformationReduce<T>&
476+ template <typename Tdest>
477+ auto Observable<T>::Reduce(ReactiveReduce<T, Tdest> function, Tdest init) -> TransformationReduce<T, Tdest>&
477478{
478- auto newOp = new TransformationReduce<T>(function);
479+ auto newOp = new TransformationReduce<T, Tdest >(function, init );
479480 Compound (*this , *newOp);
480481 return *newOp;
481482}
0 commit comments