From acb5d5b04e597c5b7108cfdd235101a3864f6f6d Mon Sep 17 00:00:00 2001 From: Patrick Wuttke Date: Sat, 17 Aug 2024 22:55:58 +0200 Subject: [PATCH] Added utilty header for variant stuff (Visitor type and variant_contains_v). --- source/mijin/types/script_value.hpp | 10 +--------- source/mijin/util/variant.hpp | 29 +++++++++++++++++++++++++++++ 2 files changed, 30 insertions(+), 9 deletions(-) create mode 100644 source/mijin/util/variant.hpp diff --git a/source/mijin/types/script_value.hpp b/source/mijin/types/script_value.hpp index 96933ee..9459f8d 100644 --- a/source/mijin/types/script_value.hpp +++ b/source/mijin/types/script_value.hpp @@ -12,18 +12,10 @@ #include "../container/optional.hpp" #include "../util/traits.hpp" +#include "../util/variant.hpp" namespace mijin { -// -// public traits -// - -template -inline constexpr bool variant_contains_v = false; - -template -inline constexpr bool variant_contains_v> = mijin::is_any_type_v; // // public types diff --git a/source/mijin/util/variant.hpp b/source/mijin/util/variant.hpp new file mode 100644 index 0000000..42d6df1 --- /dev/null +++ b/source/mijin/util/variant.hpp @@ -0,0 +1,29 @@ + +#pragma once + +#if !defined(MIJIN_UTIL_VARIANT_HPP_INCLUDED) +#define MIJIN_UTIL_VARIANT_HPP_INCLUDED 1 + +namespace mijin +{ + +// +// public traits +// + +template +inline constexpr bool variant_contains_v = false; + +template +inline constexpr bool variant_contains_v> = mijin::is_any_type_v; + +// +// public types +// +template +struct Visitor : TCallable ... +{ + using TCallable::operator()...; +}; +} +#endif // !defined(MIJIN_UTIL_VARIANT_HPP_INCLUDED)