com_ptr(com_ptr<S>& other) : com_ptr() { static_assert(!std::is_same<T, S>::value, "invalid conversion construction"); auto const hr = other.query_interface_(&ptr_); }