Spec-Zone.ru › C++

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

См. также

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

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/memory/weak_ptr/expired

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API