From 22a4e1539aca7d39d7abc932f0a4d0b27beedf80 Mon Sep 17 00:00:00 2001 From: James Ward Date: Fri, 25 Sep 2020 11:43:21 +0100 Subject: IVGCVSW-4519 Remove Boost Variant and apply_visitor variant * add mapbox/variant third party package Signed-off-by: James Ward Change-Id: I181302780edd9dace40f158a11327316a12ce69a --- third-party/mapbox/variant_visitor.hpp | 43 ++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 third-party/mapbox/variant_visitor.hpp (limited to 'third-party/mapbox/variant_visitor.hpp') diff --git a/third-party/mapbox/variant_visitor.hpp b/third-party/mapbox/variant_visitor.hpp new file mode 100644 index 0000000000..54ddba0e1c --- /dev/null +++ b/third-party/mapbox/variant_visitor.hpp @@ -0,0 +1,43 @@ +#ifndef MAPBOX_UTIL_VARIANT_VISITOR_HPP +#define MAPBOX_UTIL_VARIANT_VISITOR_HPP + +#include + +namespace mapbox { +namespace util { + +template +struct visitor; + +template +struct visitor : Fn +{ + using Fn::operator(); + + template + visitor(T&& fn) : Fn(std::forward(fn)) {} +}; + +template +struct visitor : Fn, visitor +{ + using Fn::operator(); + using visitor::operator(); + + template + visitor(T&& fn, Ts&&... fns) + : Fn(std::forward(fn)) + , visitor(std::forward(fns)...) {} +}; + +template +visitor::type...> make_visitor(Fns&&... fns) +{ + return visitor::type...> + (std::forward(fns)...); +} + +} // namespace util +} // namespace mapbox + +#endif // MAPBOX_UTIL_VARIANT_VISITOR_HPP -- cgit v1.2.1