This makes it not break if an Owned is passed as the first argument.
Owned(Handle<P>, Args &&...);
template<typename P, typename... Args>
+ Owned(Owned<P> &p, Args &&... a): Owned(static_cast<Handle<P> &>(p), std::forward<Args>(a)...) { }
+
+ template<typename P, typename... Args>
+ requires(!std::is_const_v<P>)
Owned(P &parent, Args &&... args): Owned(Handle<P>::from_object(&parent), std::forward<Args>(args)...) { }
Owned(Owned &&other): Handle<T>(other) { other.ptr = nullptr; }