Added utilty header for variant stuff (Visitor type and variant_contains_v).

This commit is contained in:
Patrick 2024-08-17 22:55:58 +02:00
parent def91ac1bf
commit acb5d5b04e
2 changed files with 30 additions and 9 deletions

View File

@ -12,18 +12,10 @@
#include "../container/optional.hpp"
#include "../util/traits.hpp"
#include "../util/variant.hpp"
namespace mijin
{
//
// public traits
//
template<typename TSearch, typename TVariant>
inline constexpr bool variant_contains_v = false;
template<typename TSearch, typename... TVariantTypes>
inline constexpr bool variant_contains_v<TSearch, std::variant<TVariantTypes...>> = mijin::is_any_type_v<TSearch, TVariantTypes...>;
//
// public types

View File

@ -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<typename TSearch, typename TVariant>
inline constexpr bool variant_contains_v = false;
template<typename TSearch, typename... TVariantTypes>
inline constexpr bool variant_contains_v<TSearch, std::variant<TVariantTypes...>> = mijin::is_any_type_v<TSearch, TVariantTypes...>;
//
// public types
//
template<typename... TCallable>
struct Visitor : TCallable ...
{
using TCallable::operator()...;
};
}
#endif // !defined(MIJIN_UTIL_VARIANT_HPP_INCLUDED)