std::is_swappable_with, std::is_swappable, std::is_nothrow_swappable_with, std::is_nothrow_swappable
| Definiert in der Kopfdatei <type_traits> |
||
| template< class T, class U > struct is_swappable_with; |
(1) | (seit C++17) |
| template< class T > struct is_swappable; |
(2) | (seit C++17) |
| template< class T, class U > struct is_nothrow_swappable_with; |
(3) | (seit C++17) |
| template< class T > struct is_nothrow_swappable; |
(4) | (seit C++17) |
value gleich true. Andernfalls ist value false.| Typ-Trait | Der Wert der Mitgliedskonstante value | |
|---|---|---|
T ist ein referenzierbarer Typ |
T ist kein referenzierbarer Typ | |
| (2) | std::is_swappable_with<T&, T&>::value | false |
| (4) | std::is_nothrow_swappable_with<T&, T&>::value | |
Wenn T oder U kein vollständiger Typ ist, (möglicherweise cv-qualifiziert) void oder ein Array unbekannter Bindung, ist das Verhalten undefiniert.
Wenn eine Instanziierung einer Vorlage davon direkt oder indirekt von einem unvollständigen Typ abhängt und diese Instanziierung ein anderes Ergebnis liefern könnte, wenn dieser Typ hypothetisch vervollständigt würde, ist das Verhalten undefiniert.
Wenn das Programm Spezialisierungen für eine der auf dieser Seite beschriebenen Vorlagen hinzufügt, ist das Verhalten undefiniert.
Inhalt |
[bearbeiten] Hilfsvariablen-Vorlagen
| template< class T, class U > inline constexpr bool is_swappable_with_v = is_swappable_with<T, U>::value; |
(seit C++17) | |
| template< class T > inline constexpr bool is_swappable_v = is_swappable<T>::value; |
(seit C++17) | |
| template< class T, class U > inline constexpr bool is_nothrow_swappable_with_v = |
(seit C++17) | |
| template< class T > inline constexpr bool is_nothrow_swappable_v = |
(seit C++17) | |
Abgeleitet von std::integral_constant
Member-Konstanten
| value [static] |
true, wenn T mit U vertauschbar ist, false andernfalls(öffentliche statische Member-Konstante) |
Memberfunktionen
| operator bool |
konvertiert das Objekt zu bool, gibt value zurück (öffentliche Memberfunktion) |
| operator() (C++14) |
gibt value zurück (öffentliche Memberfunktion) |
Membertypen
| Typ | Definition |
value_type
|
bool |
type
|
std::integral_constant<bool, value> |
[bearbeiten] Hinweise
Dieser Trait prüft nichts außerhalb des unmittelbaren Kontexts der Swap-Ausdrücke: Wenn die Verwendung von T oder U Vorlagenspezialisierungen auslösen würde, die Generierung von implizit definierten speziellen Member-Funktionen usw. und diese Fehler haben, wird der tatsächliche Swap möglicherweise nicht kompiliert, auch wenn std::is_swappable_with<T, U>::value kompiliert und zu true ausgewertet wird.
[bearbeiten] Beispiel
| Dieser Abschnitt ist unvollständig Grund: kein Beispiel |
[bearbeiten] Siehe auch
| tauscht die Werte von zwei Objekten (Funktionsvorlage) | |
| (C++11)(C++11)(C++11) |
prüft, ob ein Typ einen Verschiebezuweisungsoperator hat (Klassenvorlage) |
| (C++20) |
gibt an, dass ein Typ vertauscht werden kann oder dass zwei Typen miteinander vertauscht werden können (Konzept) |