Namespaces
Variants

std::weak_ptr<T>:: expired

From cppreference.net
Memory management library
( exposition only* )
Allocators
Uninitialized memory algorithms
Constrained uninitialized memory algorithms
Memory resources
Uninitialized storage (until C++20)
( until C++20* )
( until C++20* )
( until C++20* )

Garbage collector support (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)
(C++11) (until C++23)
bool expired ( ) const noexcept ;
(начиная с C++11)

Эквивалентно use_count ( ) == 0 . Деструктор управляемого объекта, возможно, еще не был вызван, но разрушение данного объекта неизбежно (или могло уже произойти).

Содержание

Параметры

(нет)

Возвращаемое значение

true если управляемый объект уже был удален, false в противном случае.

Примечания

Если управляемый объект используется совместно несколькими потоками, это имеет смысл только тогда, когда expired() возвращает true.

Пример

Демонстрирует, как expired используется для проверки валидности указателя.

#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();
}

Вывод:

gw is valid
gw is expired

Смотрите также

создает shared_ptr , который управляет ссылаемым объектом
(публичная функция-член)
возвращает количество объектов shared_ptr , которые управляют объектом
(публичная функция-член)