diff options
Diffstat (limited to 'core/src/Utils/Variant.hpp')
-rw-r--r-- | core/src/Utils/Variant.hpp | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/core/src/Utils/Variant.hpp b/core/src/Utils/Variant.hpp index 7fdb2dc..df2f882 100644 --- a/core/src/Utils/Variant.hpp +++ b/core/src/Utils/Variant.hpp @@ -4,16 +4,21 @@ #include <variant> template <class... Ts> -struct Overloaded : Ts... { using Ts::operator()...; }; +struct Overloaded : Ts... +{ + using Ts::operator()...; +}; template <class... Ts> Overloaded(Ts...) -> Overloaded<Ts...>; template <class... Args> -struct VariantCastProxy { +struct VariantCastProxy +{ std::variant<Args...> v; template <class... ToArgs> - operator std::variant<ToArgs...>() const { + operator std::variant<ToArgs...>() const + { return std::visit( [](auto&& arg) -> std::variant<ToArgs...> { return arg; }, v); @@ -22,6 +27,7 @@ struct VariantCastProxy { /// Use snake_case naming to align with `static_cast`, `dynamic_cast`, etc.. template <class... Args> -auto variant_cast(std::variant<Args...> v) -> VariantCastProxy<Args...> { +auto variant_cast(std::variant<Args...> v) -> VariantCastProxy<Args...> +{ return { std::move(v) }; } |