最終更新日時: 2026年07月23日 11時34分53秒 (JST)
Raclamusi が更新

履歴 編集

function
<memory>

# std::indirect::valueless_after_move(C++26)

    constexpr bool valueless_after_move() const noexcept;

## 概要

`*this`が無効値状態かどうかを判定する。`indirect`はムーブされたあとにのみ無効値状態となりうる。

## 戻り値

`*this`が無効値状態であれば`true`、そうでなければ`false`。

## 例外

投げない。

## 例

    #include <cassert>
    #include <memory>
    #include <utility>

    int main()
    {
      std::indirect<int> a{42};
      assert(!a.valueless_after_move());

      std::indirect<int> b = std::move(a);
      assert(a.valueless_after_move());  // ムーブ後は無効値状態
      assert(!b.valueless_after_move());
    }

### 出力

## バージョン

### 言語

- C++26

### 処理系

- Clang: 22 ❌
- GCC: 16.1 ✅
- Visual C++: 2026 Update 2 ❌

## 関連項目

- `std::indirect`

## 参照

- P3019R14 `indirect` and `polymorphic`: Vocabulary Types for Composite Class Design