swh:1:snp:ff2a11cd2e44dd19ec3814028ef2ce6605664e63
Tip revision: e18748e29b1e8874c44a78cb5cd1bd265b8810eb authored by Eric Fischer on 10 October 2018, 22:12:38 UTC
Merge pull request #647 from mapbox/attribute-compare
Merge pull request #647 from mapbox/attribute-compare
Tip revision: e18748e
variant_visitor.hpp
#ifndef MAPBOX_UTIL_VARIANT_VISITOR_HPP
#define MAPBOX_UTIL_VARIANT_VISITOR_HPP
namespace mapbox {
namespace util {
template <typename... Fns>
struct visitor;
template <typename Fn>
struct visitor<Fn> : Fn
{
using type = Fn;
using Fn::operator();
visitor(Fn fn) : Fn(fn) {}
};
template <typename Fn, typename... Fns>
struct visitor<Fn, Fns...> : Fn, visitor<Fns...>
{
using type = visitor;
using Fn::operator();
using visitor<Fns...>::operator();
visitor(Fn fn, Fns... fns) : Fn(fn), visitor<Fns...>(fns...) {}
};
template <typename... Fns>
visitor<Fns...> make_visitor(Fns... fns)
{
return visitor<Fns...>(fns...);
}
} // namespace util
} // namespace mapbox
#endif // MAPBOX_UTIL_VARIANT_VISITOR_HPP