std::move_constructible
Von cppreference.com
| 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 TypT, und -
u2, ein vonrvunterschiedenes Objekt vom TypT, das gleichrvist,
die folgenden Bedingungen erfüllt sind
- Nach der Definition T u = rv; ist
ugleichu2; -
T(rv)ist gleichu2; und - Wenn
Tnicht const-qualifiziert ist, dann ist der resultierende Zustand vonrv(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]
- 18.4.13 Konzept
- C++20 Standard (ISO/IEC 14882:2020)
- 18.4.13 Konzept
move_constructible[concept.moveconstructible]
- 18.4.13 Konzept
[bearbeiten] Siehe auch
| (C++11)(C++11)(C++11) |
prüft, ob ein Typ aus einer rvalue-Referenz konstruiert werden kann (Klassenvorlage) |