>>67
const Derived *p = static_cast<const Derived *>(this);
const has_dependency_pointer<typename T::__base_t> *dp = p;
return *static_cast<T *>(dp->m_pDependingObject);