From bda19a9ff3ae8e935562f8a5a95f5ba0ef585b84 Mon Sep 17 00:00:00 2001 From: Ali Mohammad Pur Date: Sun, 27 Jun 2021 00:04:46 +0430 Subject: [PATCH] AK: Add explicit Variant conversion operators This allows converting between Variants of different types with less pain. --- AK/Variant.h | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/AK/Variant.h b/AK/Variant.h index 83c884d3494..375e87413dd 100644 --- a/AK/Variant.h +++ b/AK/Variant.h @@ -331,7 +331,7 @@ public: } template - Variant downcast() & + Variant downcast() const& { Variant instance { Variant::invalid_index, Detail::VariantConstructTag {} }; visit([&](const auto& value) { @@ -342,6 +342,18 @@ public: return instance; } + template + explicit operator Variant() && + { + return downcast(); + } + + template + explicit operator Variant() const& + { + return downcast(); + } + private: static constexpr auto data_size = integer_sequence_generate_array(0, IntegerSequence()).max(); static constexpr auto data_alignment = integer_sequence_generate_array(0, IntegerSequence()).max();