Namespaces
Variants

std:: move_constructible

From cppreference.net
ヘッダーで定義 <concepts>
template < class T >
concept move_constructible = std:: constructible_from < T, T > && std:: convertible_to < T, T > ;
(C++20以降)

move_constructible の概念は、 T が参照型である場合、またはその型のオブジェクトが右辺値から直接初期化とコピー初期化の両方の文脈で、通常のセマンティクスで構築可能なオブジェクト型である場合に満たされます。

セマンティック要件

T がオブジェクト型である場合、 move_constructible<T> は以下の条件が与えられたときにのみモデル化されます

  • rv 、型 T の右辺値、および
  • u2 rv と等しい型 T の別個のオブジェクト、

以下が真です:

  • 定義 T u = rv ; の後、 u u2 と等しい;
  • T(rv) u2 と等しい;および
  • T がconst修飾されていない場合、 rv の結果状態(上記いずれかの定義/式が評価された後)は有効だが未指定である;そうでなければ、変更されない。

参考文献

  • C++23標準 (ISO/IEC 14882:2024):
  • 18.4.13 コンセプト move_constructible [concept.moveconstructible]
  • C++20 標準 (ISO/IEC 14882:2020):
  • 18.4.13 コンセプト move_constructible [concept.moveconstructible]

関連項目

型が右辺値参照から構築可能かどうかをチェックする
(クラステンプレート)