Chromium Embedded Framework (CEF)  145.0.1+g472e75d+chromium-145.0.7632.5
base::WeakPtr< T > Class Template Reference

The WeakPtr class holds a weak reference to |T*|. More...

#include "include/base/cef_weak_ptr.h"

Public Member Functions

 WeakPtr ()=default
 
 WeakPtr (std::nullptr_t)
 
template<typename U >
 requires (std::convertible_to< U *, T * >) WeakPtr(const WeakPtr< U > &other)
 Allow conversion from U to T provided U "is a" T. More...
 
template<typename U >
 requires (std::convertible_to< U *, T * >) WeakPtr &operator
 
 ptr_ (std::move(other.ptr_))
 
template<typename U >
 requires (std::convertible_to< U *, T * >) WeakPtr &operator
 
 WeakPtr (cef_internal::WeakReference &&ref, T *ptr)
 
cef_internal::WeakReference CloneWeakReference () const
 

Public Attributes

cef_internal::WeakReference ref_
 
T * ptr_ = nullptr
 

Friends

class WeakPtrFactory< T >
 
class WeakPtrFactory< std::remove_const_t< T > >
 

Detailed Description

template<typename T>
class base::WeakPtr< T >

The WeakPtr class holds a weak reference to |T*|.

This class is designed to be used like a normal pointer. You should always null-test an object of this class before using it or invoking a method that may result in the underlying object being destroyed.

EXAMPLE:

  class Foo { ... };
  WeakPtr<Foo> foo;
  if (foo)
    foo->method();

WeakPtr intentionally doesn't implement operator== or operator<=>, because comparisons of weak references are inherently unstable. If the comparison takes validity into account, the result can change at any time as pointers are invalidated. If it depends only on the underlying pointer value, even after the pointer is invalidated, unrelated WeakPtrs can unexpectedly compare equal if the address is reused.

Constructor & Destructor Documentation

◆ WeakPtr() [1/3]

template<typename T >
base::WeakPtr< T >::WeakPtr ( )
default

◆ WeakPtr() [2/3]

template<typename T >
base::WeakPtr< T >::WeakPtr ( std::nullptr_t  )
inline

◆ WeakPtr() [3/3]

template<typename T >
base::WeakPtr< T >::WeakPtr ( cef_internal::WeakReference &&  ref,
T *  ptr 
)
inline

Member Function Documentation

◆ CloneWeakReference()

template<typename T >
cef_internal::WeakReference base::WeakPtr< T >::CloneWeakReference ( ) const
inline

◆ ptr_()

template<typename T >
base::WeakPtr< T >::ptr_ ( std::move(other.ptr_)  )
inline

◆ requires() [1/3]

template<typename T >
template<typename U >
base::WeakPtr< T >::requires ( std::convertible_to< U *, T * >  ) &

◆ requires() [2/3]

template<typename T >
template<typename U >
base::WeakPtr< T >::requires ( std::convertible_to< U *, T * >  ) &

◆ requires() [3/3]

template<typename T >
template<typename U >
base::WeakPtr< T >::requires ( std::convertible_to< U *, T * >  ) const &
inline

Allow conversion from U to T provided U "is a" T.

Note that this is separate from the (implicit) copy and move constructors.

Friends And Related Function Documentation

◆ WeakPtrFactory< std::remove_const_t< T > >

template<typename T >
friend class WeakPtrFactory< std::remove_const_t< T > >
friend

◆ WeakPtrFactory< T >

template<typename T >
friend class WeakPtrFactory< T >
friend

Member Data Documentation

◆ ptr_

template<typename T >
T* base::WeakPtr< T >::ptr_ = nullptr

◆ ref_

template<typename T >
cef_internal::WeakReference base::WeakPtr< T >::ref_

The documentation for this class was generated from the following file: