+
+ template<typename U>
+ requires std::is_base_of_v<T, U>
+ Owned(Owned<U> &&other): Handle<T>(other) { other.ptr = nullptr; }
+
+ Owned &operator=(Owned &&other) { assign(std::move(other)); return *this; }
+
+ template<typename U>
+ requires std::is_base_of_v<T, U>
+ Owned &operator=(Owned<U> &&other) { assign(std::move(other)); return *this; }
+