template <class T>
struct Subject : public Observable<T>, public Observer<T> {
typedef typename Observable<T>::ObserversGuard ObserversGuard;
- void onNext(T val) override {
+ void onNext(const T& val) override {
ObserversGuard guard(this);
for (auto& kv : Observable<T>::getObservers()) {
kv.second->onNext(val);