#pragma once #include #include namespace utils { namespace details { template auto removeMonostate(std::variant) -> std::variant; template auto removeMonostate(std::variant) -> std::variant; template struct WithoutMonostate { private: public: using type = decltype(removeMonostate(Variant{})); }; } // namespace details template using WithoutMonostate = typename details::WithoutMonostate::type; } // namespace utils