Spec-Zone.ru › C++

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

См. также

lock
создаёт shared_ptr который управляет ссылаемым объектом
(публичный член-функция)
use_count
возвращает количество 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

Spec-Zone.ru

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