#pragma once #if !defined(MIJIN_UTIL_VARIANT_HPP_INCLUDED) #define MIJIN_UTIL_VARIANT_HPP_INCLUDED 1 #include #include #include "./traits.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 // template struct Visitor : TCallable ... { using TCallable::operator()...; }; template struct CastTo { template TRet operator()(T&& arg) const { return static_cast(std::forward(arg)); } }; } #endif // !defined(MIJIN_UTIL_VARIANT_HPP_INCLUDED)