std::weak_ptr<T>::expired

From cppreference.com
< cpp‎ | memory‎ | weak ptr
Memory management library
(exposition only*)
Uninitialized memory algorithms
(C++17)
(C++17)
(C++17)
(C++20)
Constrained uninitialized
memory algorithms
(C++20)
C Library

Allocators
(C++11)
(C++11)
Memory resources
Garbage collection support
(C++11)(until C++23)
(C++11)(until C++23)
(C++11)(until C++23)
(C++11)(until C++23)
(C++11)(until C++23)
(C++11)(until C++23)
Uninitialized storage
(until C++20*)
(until C++20*)
(until C++20*)
Explicit lifetime management
bool expired() const noexcept;
(since C++11)

Equivalent to use_count() == 0

Parameters

(none)

Return value

true if the managed object has already been deleted, false

Notes

If the managed object is shared among threads, it is only meaningful when expired() returns true.

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)