std::weak_ptr<T>::expired
提供: cppreference.com
<tbody>
</tbody>
bool expired() const noexcept; |
(C++11以上) | |
use_count() == 0 と同等です。 管理対象オブジェクトのデストラクタはまだ呼ばれていないかもしれませんが、そのオブジェクトの破棄は目前に迫っています (またはすでに起きたかもしれません)。
引数
(なし)
戻り値
管理対象オブジェクトがすでに削除されていれば true、そうでなければ false。
ノート
管理対象オブジェクトが複数のスレッド間で共有されている場合、この関数は本質的に競合しがちです。 特に、 false の結果は、それが使用できる前に古くなるかもしれません。 true の結果は信頼できます。
例
どのように expired を使用してポインタの有効性を調べるかをデモンストレーションします。
Run this code
#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 を作成します (パブリックメンバ関数) | |
オブジェクトを管理している shared_ptr オブジェクトの数を返します (パブリックメンバ関数) |