std::weak_ptr<T>::expired
bool expired() const noexcept; | (с C++11) |
Эквивалентно use_count() == 0. Деструктор управляемого объекта ещё не был вызван, но уничтожение этого объекта неизбежно (или уже произошло).
Параметры
(нет)
Возвращаемое значение
true если управляемый объект уже удален, false в противном случае.
Примечания
Эта функция потенциально небезопасна в условиях гонки, если управляемый объект используется в нескольких потоках. В частности, ложное значение может стать устаревшим, прежде чем оно будет использовано. Истинное значение надёжно.
Пример
Демонстрирует, как используется 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/w/cpp/memory/weak_ptr/expired