Skip to content

Latest commit

 

History

History
74 lines (55 loc) · 1.59 KB

File metadata and controls

74 lines (55 loc) · 1.59 KB

valueless_after_move

  • memory[meta header]
  • std[meta namespace]
  • polymorphic[meta class]
  • function[meta id-type]
  • cpp26[meta cpp]
constexpr bool valueless_after_move() const noexcept;

概要

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

戻り値

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

例外

投げない。

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

struct Base {
  virtual ~Base() = default;
  virtual int f() const { return 0; }
};
struct Derived : Base {
  int x = 42;
  Derived() = default;
  Derived(int x) : x(x) {}
  int f() const override { return x; }
};

int main()
{
  std::polymorphic<Base> a{std::in_place_type<Derived>};
  assert(!a.valueless_after_move());

  std::polymorphic<Base> b = std::move(a);
  assert(a.valueless_after_move());  // ムーブ後は無効値状態
}
  • std::polymorphic[link ../polymorphic.md]
  • std::in_place_type[link /reference/utility/in_place_type_t.md]
  • valueless_after_move[color ff0000]

出力

バージョン

言語

  • C++26

処理系

  • Clang: 22 [mark noimpl]
  • GCC: 16.1 [mark verified]
  • Visual C++: 2026 Update 2 [mark noimpl]

関連項目

参照