Tatooine
visit.h
Go to the documentation of this file.
1#ifndef TATOOINE_VISIT_H
2#define TATOOINE_VISIT_H
3//==============================================================================
4#include <variant>
5//==============================================================================
6namespace tatooine {
7//==============================================================================
8using std::visit;
9//==============================================================================
12template <typename Visitor, typename Variant0, typename Variant1,
13 typename... Variants>
14constexpr auto visit(Visitor&& visitor, Variant0&& variant0,
15 Variant1&& variant1, Variants&&... variants) -> void {
16 auto nested_visitor = [&](auto&& value0) {
17 visit(
18 [&](auto&&... rest_of_values) {
19 visitor(std::forward<decltype(value0)>(value0),
20 std::forward<decltype(rest_of_values)>(rest_of_values)...);
21 },
22 std::forward<Variant1>(variant1), std::forward<Variants>(variants)...);
23 };
24 visit(nested_visitor, std::forward<Variant0>(variant0));
25}
26//==============================================================================
27} // namespace tatooine
28//==============================================================================
29#endif
Definition: algorithm.h:6
constexpr auto visit(Visitor &&visitor, Variant0 &&variant0, Variant1 &&variant1, Variants &&... variants) -> void
Definition: visit.h:14