Namespaces
Variants

std:: move_constructible

From cppreference.net
Definiert im Header <concepts>
template < class T >
concept move_constructible = std:: constructible_from < T, T > && std:: convertible_to < T, T > ;
(seit C++20)

Das Konzept move_constructible ist erfüllt, wenn T ein Referenztyp ist, oder wenn es ein Objekttyp ist, bei dem ein Objekt dieses Typs aus einem Rvalue dieses Typs sowohl in direkter als auch in Kopierinitialisierungskontexten mit der üblichen Semantik konstruiert werden kann.

Semantische Anforderungen

Wenn T ein Objekttyp ist, dann wird move_constructible<T> nur dann modelliert, wenn gegeben

  • rv , ein Rvalue vom Typ T , und
  • u2 , ein separates Objekt vom Typ T gleich rv ,

Folgendes trifft zu:

  • Nach der Definition T u = rv ; ist u gleich u2 ;
  • T(rv) ist gleich u2 ; und
  • Falls T nicht const-qualifiziert ist, dann ist der resultierende Zustand von rv (nach Auswertung der Definition/des Ausdrucks in einem der obigen Punkte) gültig aber unspezifiziert; andernfalls ist er unverändert.

Referenzen

  • C++23-Standard (ISO/IEC 14882:2024):
  • 18.4.13 Konzept move_constructible [concept.moveconstructible]
  • C++20-Standard (ISO/IEC 14882:2020):
  • 18.4.13 Konzept move_constructible [concept.moveconstructible]

Siehe auch

prüft, ob ein Typ aus einer Rvalue-Referenz konstruiert werden kann
(Klassentemplate)