bool expired() const noexcept;
概要
監視しているshared_ptr
オブジェクトの寿命・リンクが切れたかを判定する。
戻り値
use_count() == 0
備考
この関数は、実際にはuse_count() == 0
で判定するよりも、高速に実装される可能性がある。
例
#include <cassert>
#include <memory>
int main()
{
std::weak_ptr<int> wp;
// 監視対象とリンクしていない
assert(wp.expired());
{
std::shared_ptr<int> sp(new int(3));
// shared_ptrオブジェクトspを監視する
wp = sp;
// shared_ptrオブジェクトの寿命は切れていない
assert(!wp.expired());
}
// shared_ptrオブジェクトの寿命が切れた
assert(wp.expired());
}
xxxxxxxxxx
#include <cassert>
#include <memory>
int main()
{
std::weak_ptr<int> wp;
// 監視対象とリンクしていない
assert(wp.expired());
{
std::shared_ptr<int> sp(new int(3));
// shared_ptrオブジェクトspを監視する
wp = sp;
// shared_ptrオブジェクトの寿命は切れていない
assert(!wp.expired());
}
// shared_ptrオブジェクトの寿命が切れた
assert(wp.expired());
}
出力
バージョン
言語
- C++11
処理系
- GCC: 4.3.6 ✅
- Clang: 3.0 ✅
- ICC: ?
- Visual C++: ?