diff --git a/Telegram/SourceFiles/rpl/consumer.h b/Telegram/SourceFiles/rpl/consumer.h index eca674c01..e427ae1da 100644 --- a/Telegram/SourceFiles/rpl/consumer.h +++ b/Telegram/SourceFiles/rpl/consumer.h @@ -38,25 +38,6 @@ class consumer_handlers; template class type_erased_handlers { public: - template < - typename OnNext, - typename OnError, - typename OnDone> - static std::shared_ptr create( - OnNext &&next, - OnError &&error, - OnDone &&done) { - return std::make_shared, - std::decay_t, - std::decay_t>>( - std::forward(next), - std::forward(error), - std::forward(done)); - } - virtual bool put_next(Value &&value) = 0; virtual bool put_next_copy(const Value &value) = 0; virtual void put_error(Error &&error) = 0; @@ -70,6 +51,8 @@ public: void terminate(); + virtual ~type_erased_handlers() = default; + protected: lifetime _lifetime; bool _terminated = false; @@ -107,20 +90,6 @@ public: , _done(std::forward(done)) { } - template < - typename OnNextOther, - typename OnErrorOther, - typename OnDoneOther> - static std::shared_ptr create( - OnNextOther &&next, - OnErrorOther &&error, - OnDoneOther &&done) { - return std::make_shared( - std::forward(next), - std::forward(error), - std::forward(done)); - } - bool put_next(Value &&value) final override; bool put_next_copy(const Value &value) final override; void put_error(Error &&error) final override; @@ -389,7 +358,13 @@ template inline consumer_base::consumer_base( OnNext &&next, OnError &&error, - OnDone &&done) : _handlers(Handlers::create( + OnDone &&done) +: _handlers(std::make_shared, + std::decay_t, + std::decay_t>>( std::forward(next), std::forward(error), std::forward(done))) { diff --git a/Telegram/SourceFiles/rpl/event_stream.h b/Telegram/SourceFiles/rpl/event_stream.h index 5580352d3..0c40cbd9f 100644 --- a/Telegram/SourceFiles/rpl/event_stream.h +++ b/Telegram/SourceFiles/rpl/event_stream.h @@ -24,6 +24,7 @@ Copyright (c) 2014-2017 John Preston, https://desktop.telegram.org #include #include #include +#include #include "base/algorithm.h" #include "base/assertion.h" #include "base/index_based_iterator.h" diff --git a/Telegram/SourceFiles/rpl/range.h b/Telegram/SourceFiles/rpl/range.h index da6026c91..4541f9062 100644 --- a/Telegram/SourceFiles/rpl/range.h +++ b/Telegram/SourceFiles/rpl/range.h @@ -21,6 +21,7 @@ Copyright (c) 2014-2017 John Preston, https://desktop.telegram.org #pragma once #include +#include namespace rpl {