std::negation
Von cppreference.com
| Definiert in der Kopfdatei <type_traits> |
||
| template< class B > struct negation; |
(seit C++17) | |
Bildet die logische Negation des Typ-Traits B.
Der Typ std::negation<B> ist ein UnaryTypeTrait mit dem Basismerkmal std::bool_constant<!bool(B::value)>.
Wenn das Programm Spezialisierungen für std::negation oder std::negation_v hinzufügt, ist das Verhalten undefiniert.
Inhalt |
[bearbeiten] Template-Parameter
| B | - | Ein beliebiger Typ, für den der Ausdruck bool(B::value) ein gültiger Konstantenausdruck ist. |
[bearbeiten] Hilfsvariablen-Template
| template< class B > constexpr bool negation_v = negation<B>::value; |
(seit C++17) | |
Abgeleitet von std::integral_constant
Member-Konstanten
| value [static] |
true, wenn B ein Mitglied ::value hat, das beim expliziten Konvertieren zu bool false ist, andernfalls false.(ö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] Mögliche Implementierung
template<class B> struct negation : std::bool_constant<!bool(B::value)> { }; |
[bearbeiten] Anmerkungen
| Feature-Test-Makro | Wert | Std | Feature |
|---|---|---|---|
__cpp_lib_logical_traits |
201510L |
(C++17) | Typ-Traits für logische Operatoren |
[bearbeiten] Beispiel
Führen Sie diesen Code aus
#include <type_traits> static_assert( std::is_same< std::bool_constant<false>, typename std::negation<std::bool_constant<true>>::type>::value, ""); static_assert( std::is_same< std::bool_constant<true>, typename std::negation<std::bool_constant<false>>::type>::value, ""); static_assert(std::negation_v<std::bool_constant<true>> == false); static_assert(std::negation_v<std::bool_constant<false>> == true); int main() {}
[bearbeiten] Siehe auch
| (C++17) |
variadische logische AND-Metafunktion (Klassenvorlage) |
| (C++17) |
variadische logische OR-Metafunktion (Klassenvorlage) |
| (C++11)(C++17) |
konstantes zur Compilezeit vom angegebenen Typ mit angegebenem Wert (Klassenvorlage) |