12345678910111213141516171819202122232425262728293031323334353637383940414243 |
- // 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 <mqtt/namespace.hpp>
- #include <mqtt/variant.hpp>
- namespace MQTT_NS {
- template <typename... Lambdas>
- struct lambda_visitor;
- template <typename Lambda1, typename... Lambdas>
- struct lambda_visitor<Lambda1, Lambdas...>
- : Lambda1, lambda_visitor<Lambdas...> {
- using Lambda1::operator();
- using lambda_visitor<Lambdas...>::operator();
- lambda_visitor(Lambda1 lambda1, Lambdas... lambdas)
- : Lambda1(lambda1), lambda_visitor<Lambdas...>(lambdas...) {}
- };
- template <typename Lambda1>
- struct lambda_visitor<Lambda1> : Lambda1 {
- using Lambda1::operator();
- lambda_visitor(Lambda1 lambda1)
- : Lambda1(lambda1) {}
- };
- template <typename... Lambdas>
- inline lambda_visitor<Lambdas...> make_lambda_visitor(Lambdas&&... lambdas) {
- return { std::forward<Lambdas>(lambdas)... };
- }
- } // namespace MQTT_NS
- #endif // MQTT_VISITOR_UTIL_HPP
|