Namespaces
Variants
Views
Actions

std::weak_ptr::expired

From cppreference.com
< cpp‎ | memory‎ | weak ptr
 
 
 
Dynamic memory management
Uninitialized storage
(C++17)
Garbage collection support
Miscellaneous
(C++20)
(C++11)
(C++11)
C Library
Low level memory management
 
 
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).

Contents

[edit] Parameters

(none)

[edit] Return value

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

[edit] 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.

[edit] 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


[edit] See also

creates a shared_ptr that manages the referenced object
(public member function) [edit]
returns the number of shared_ptr objects that manage the object
(public member function) [edit]