33 lines
		
	
	
		
			656 B
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			33 lines
		
	
	
		
			656 B
		
	
	
	
		
			C++
		
	
	
	
	
	
 | 
						|
#pragma once
 | 
						|
 | 
						|
#if !defined(MIJIN_UTIL_VARIANT_HPP_INCLUDED)
 | 
						|
#define MIJIN_UTIL_VARIANT_HPP_INCLUDED 1
 | 
						|
 | 
						|
#include <variant>
 | 
						|
#include "./traits.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
 | 
						|
//
 | 
						|
template<typename... TCallable>
 | 
						|
struct Visitor : TCallable ...
 | 
						|
{
 | 
						|
    using TCallable::operator()...;
 | 
						|
};
 | 
						|
}
 | 
						|
#endif // !defined(MIJIN_UTIL_VARIANT_HPP_INCLUDED)
 |