std::weak_ptr<T>::expired
bool expired() const noexcept; |
(since C++11) (constexpr since C++26) |
Проверяет, был ли управляемый объект уже удалён. Деструктор управляемого объекта ещё может не быть вызван, но уничтожение этого объекта неизбежно (или уже могло произойти).
Возвращаемое значение
use_count() == 0
Примечания
Если управляемый объект используется совместно несколькими потоками, это имеет смысл только тогда, когда 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, которые управляют объектом (открытая функция-член) |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/memory/weak_ptr/expired