std::weak_ptr::expired

From cppreference.com
< cpp‎ | memory‎ | weak ptr
 
 
 
Dynamic memory management
Uninitialized storage
(C++17)
(deprecated since c++17)
(deprecated since c++17)
(deprecated since c++17)
Garbage collection support
Miscellaneous
(C++11)
(C++11)
C Library
Low level memory management
 
 
bool expired() const;
(since C++11)

Checks whether the managed object has already been deleted. Equivalent to use_count() == 0.

Parameters

(none)

Return value

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

Exceptions

noexcept specification:  
noexcept
  

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.

#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
(public member function)
returns the number of shared_ptr objects that manage the object
(public member function)