std::weak_ptr<T>::expired
From cppreference.com
| bool expired() const noexcept; |
(C++11以降) | |
use_count() == 0 と等価です。管理対象オブジェクトのデストラクタはまだ呼び出されていないかもしれませんが、このオブジェクトの破棄は間近(または既に発生している)です。
目次 |
[編集] パラメータ
(なし)
[編集] 戻り値
管理対象オブジェクトが既に削除されている場合は true、そうでない場合は false。
[編集] 注記
管理対象オブジェクトがスレッド間で共有されている場合、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
[編集] 関連項目
参照されたオブジェクトを管理する shared_ptr を作成する(public member function) | |
オブジェクトを管理する shared_ptr オブジェクトの数を返す(public member function) |