diff --git a/AK/Variant.h b/AK/Variant.h index 883fb2e526..ad73d7bd23 100644 --- a/AK/Variant.h +++ b/AK/Variant.h @@ -207,6 +207,18 @@ public: return index_of() != invalid_index; } + template + Variant(Variant&& old) requires((can_contain() && ...)) + : Variant(move(old).template downcast()) + { + } + + template + Variant(const Variant& old) requires((can_contain() && ...)) + : Variant(old.template downcast()) + { + } + template friend struct Variant; @@ -389,18 +401,6 @@ public: return instance; } - template - explicit operator Variant() && - { - return downcast(); - } - - template - explicit operator Variant() const& - { - return downcast(); - } - private: static constexpr auto data_size = Detail::integer_sequence_generate_array(0, IntegerSequence()).max(); static constexpr auto data_alignment = Detail::integer_sequence_generate_array(0, IntegerSequence()).max();