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 TypT, und -
u2, ein separates Objekt vom TypTgleichrv,
Folgendes trifft zu:
-
Nach der Definition
T u
=
rv
;
ist
ugleichu2; -
T(rv)ist gleichu2; und -
Falls
Tnicht const-qualifiziert ist, dann ist der resultierende Zustand vonrv(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]
-
18.4.13 Konzept
- C++20-Standard (ISO/IEC 14882:2020):
-
-
18.4.13 Konzept
move_constructible[concept.moveconstructible]
-
18.4.13 Konzept
Siehe auch
|
(C++11)
(C++11)
(C++11)
|
prüft, ob ein Typ aus einer Rvalue-Referenz konstruiert werden kann
(Klassentemplate) |