Namensräume
Varianten
Aktionen

std::move_constructible

Von cppreference.com
< cpp‎ | concepts
 
 
 
Definiert in der Header-Datei <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 in direkten und Kopierinitialisierungskontexten mit den üblichen Semantiken konstruiert werden kann.

[bearbeiten] Semantische Anforderungen

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

  • rv, ein rvalue vom Typ T, und
  • u2, ein von rv unterschiedenes Objekt vom Typ T, das gleich rv ist,

die folgenden Bedingungen erfüllt sind

  • Nach der Definition T u = rv; ist u gleich u2;
  • T(rv) ist gleich u2; und
  • Wenn T nicht const-qualifiziert ist, dann ist der resultierende Zustand von rv (nachdem die Definition/der Ausdruck in einem der obigen Punkte ausgewertet wurde) gültig, aber undefiniert; andernfalls ist er unverändert.

[bearbeiten] 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]

[bearbeiten] Siehe auch

prüft, ob ein Typ aus einer rvalue-Referenz konstruiert werden kann
(Klassenvorlage) [bearbeiten]