最終更新日時: 2025年10月14日 14時41分25秒 (JST)
Akira Takahashi が更新

履歴 編集

function
<memory>

# std::weak_ptr::expired(C++11)

    bool
      expired() const noexcept; // (1) C++11
    constexpr bool
      expired() const noexcept; // (1) C++26

## 概要

監視している`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());
    }

### 出力

## バージョン

### 言語

- C++11

### 処理系

- GCC: 4.3.6 ✅
- Clang: 3.0 ✅
- ICC: ?
- Visual C++: ?

## 参照

- P3037R6 `constexpr std::shared_ptr` and friends