Home | History | Annotate | Download | only in memory

Lines Matching full:derived

168   // A safe static downcast of a WeakPtr<Base> to WeakPtr<Derived>. This
172 template<typename Derived>
173 static WeakPtr<Derived> StaticAsWeakPtr(Derived* t) {
175 std::is_base_of<internal::SupportsWeakPtrBase, Derived>::value,
177 return AsWeakPtrImpl<Derived>(t, *t);
181 // This template function uses type inference to find a Base of Derived
183 // static_cast the Base* to a Derived*.
184 template <typename Derived, typename Base>
185 static WeakPtr<Derived> AsWeakPtrImpl(
186 Derived* t, const SupportsWeakPtr<Base>&) {
188 return WeakPtr<Derived>(ptr.ref_, static_cast<Derived*>(ptr.ptr_));
317 // weak pointers to the class until after the derived class' members have been
336 // Helper function that uses type deduction to safely return a WeakPtr<Derived>
337 // when Derived doesn't directly extend SupportsWeakPtr<Derived>, instead it
342 // class Derived : public Base {};
344 // Derived derived;
345 // base::WeakPtr<Derived> ptr = base::AsWeakPtr(&derived);
348 // Derived::AsWeakPtr() is WeakPtr<Base> SupportsWeakPtr<Base>::AsWeakPtr(),
349 // and there's no way to safely cast WeakPtr<Base> to WeakPtr<Derived> at
352 // base::WeakPtr<Derived> ptr = derived.AsWeakPtr(); // Fails.
354 template <typename Derived>
355 WeakPtr<Derived> AsWeakPtr(Derived* t) {
356 return internal::SupportsWeakPtrBase::StaticAsWeakPtr<Derived>(t);