QBiPointer does not own the object it points to; however, in quite a few places it would make more sense for it to actually own it.
class Deleter1 = std::default_delete<T>,
class Deleter2 = std::default_delete<T>
> class QOwningBiPtr;
with the obvious semantics.
Use the chance to reconsider the API (as<T> instead of asT1 and asT2, non asserting as, more?)