std::weak_ptr<T>::expired (3) - Linux Manuals

std::weak_ptr<T>::expired: std::weak_ptr<T>::expired

NAME

std::weak_ptr<T>::expired - std::weak_ptr<T>::expired

Synopsis


bool expired() const noexcept; (since C++11)


Equivalent to use_count() == 0. The destructor for the managed object may not yet have been called, but this object's destruction is imminent (or may have already happened).

Parameters


(none)

Return value


true if the managed object has already been deleted, false otherwise.

Notes


This function is inherently racy if the managed object is shared among threads. In particular, a false result may become stale before it can be used. A true result is reliable.

Example


Demonstrates how expired is used to check validity of the pointer.
// Run this code


  #include <iostream>
  #include <memory>


  std::weak_ptr<int> gw;


  void f()
  {
      if (!gw.expired()) {
   std::cout << "gw is valid\n";

      }
      else {
          std::cout << "gw is expired\n";
      }
  }


  int main()
  {
      {
          auto sp = std::make_shared<int>(42);
   gw = sp;


   f();

      }


      f();
  }

Output:


  gw is valid
  gw is expired

See also


          creates a shared_ptr that manages the referenced object
lock (public member function)
          returns the number of shared_ptr objects that manage the object
use_count (public member function)