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)
 |