// Copyright Takatoshi Kondo 2017 // // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #if !defined(MQTT_VISITOR_UTIL_HPP) #define MQTT_VISITOR_UTIL_HPP #include #include namespace MQTT_NS { template struct lambda_visitor; template struct lambda_visitor : Lambda1, lambda_visitor { using Lambda1::operator(); using lambda_visitor::operator(); lambda_visitor(Lambda1 lambda1, Lambdas... lambdas) : Lambda1(lambda1), lambda_visitor(lambdas...) {} }; template struct lambda_visitor : Lambda1 { using Lambda1::operator(); lambda_visitor(Lambda1 lambda1) : Lambda1(lambda1) {} }; template inline lambda_visitor make_lambda_visitor(Lambdas&&... lambdas) { return { std::forward(lambdas)... }; } } // namespace MQTT_NS #endif // MQTT_VISITOR_UTIL_HPP