// Copyright 2018 Dolphin Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later #pragma once #include namespace detail { template struct VariantCastProxy { const std::variant& v; template operator std::variant() const { return std::visit([](auto&& arg) { return std::variant{arg}; }, v); } }; } // namespace detail template auto VariantCast(const std::variant& v) { return detail::VariantCastProxy{v}; } template struct overloaded : Ts... { using Ts::operator()...; }; template overloaded(Ts...) -> overloaded;