std::weak_ptr<T>::expired
Материал из cppreference.com
<tbody>
</tbody>
bool expired() const noexcept; |
(начиная с C++11) | |
Эквивалентно use_count() == 0. Деструктор для управляемого объекта, возможно, ещё не был вызван, но уничтожение этого объекта неизбежно (или, возможно, уже произошло).
Параметры
(нет)
Возвращаемое значение
true, если управляемый объект уже удалён, false иначе.
Примечание
Эта функция по своей сути эффективна, если управляемый объект совместно используется потоками. В частности, результат false может устареть до того, как его можно будет использовать. Результат true надёжен.
Пример
Демонстрирует, как expired используется для проверки достоверности указателя.
Запустить этот код
#include <iostream>
#include <memory>
std::weak_ptr<int> gw;
void f()
{
if (!gw.expired())
std::cout << "gw действителен\n";
else
std::cout << "gw не действителен\n";
}
int main()
{
{
auto sp = std::make_shared<int>(42);
gw = sp;
f();
}
f();
}
Вывод:
gw действителен
gw не действителен
Смотрите также
создаёт shared_ptr, который управляет объектом, на который ссылается weak_ptr (public функция-элемент) | |
возвращает количество объектов shared_ptr, которые управляют объектом (public функция-элемент) |