diff --git a/include/cppkafka/utils/consumer_dispatcher.h b/include/cppkafka/utils/consumer_dispatcher.h index d0c8012..76ad1f3 100644 --- a/include/cppkafka/utils/consumer_dispatcher.h +++ b/include/cppkafka/utils/consumer_dispatcher.h @@ -175,21 +175,21 @@ private: template static typename std::enable_if::value, const Functor&>::type - find(const Head&, Functors&&... functors) { - return find(std::forward(functors)...); + find(const Head&, const Functors&... functors) { + return find(functors...); } }; template - const Functor& find_functor(Args&&... args) { - return find_functor_helper::find(std::forward(args)...); + const Functor& find_functor(const Args&... args) { + return find_functor_helper::find(args...); } // Finds the first functor that accepts the parameters in a tuple and returns it. If no // such functor is found, a static asertion will occur template const typename find_type::type& - find_callable_functor(const Functors&... functors) { + find_matching_functor(const Functors&... functors) { using type = typename find_type::type; static_assert(!std::is_same::value, "Valid functor not found"); return find_functor(functors...); @@ -236,12 +236,12 @@ void ConsumerDispatcher::run(const Args&... args) { check_callbacks_match(args...); // This one is required - const auto& on_message = find_callable_functor(args...); + const auto& on_message = find_matching_functor(args...); // For the rest, append our own implementation at the end as a fallback - const auto& on_error = find_callable_functor(args..., self::handle_error); - const auto& on_eof = find_callable_functor(args..., self::handle_eof); - const auto& on_timeout = find_callable_functor(args..., self::handle_timeout); + const auto& on_error = find_matching_functor(args..., &self::handle_error); + const auto& on_eof = find_matching_functor(args..., &self::handle_eof); + const auto& on_timeout = find_matching_functor(args..., &self::handle_timeout); running_ = true; while (running_) { Message msg = consumer_.poll();