std::weak_ptr<T>::expired
自 C++11 起
bool expired() const noexcept;
等同于 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