std::error_condition
| Definiert in der Header-Datei <system_error> |
||
| class error_condition; |
(seit C++11) | |
std::error_condition speichert einen plattformunabhängigen Wert, der eine Fehlerbedingung identifiziert. Ähnlich wie std::error_code wird er eindeutig durch einen Integer-Wert und eine std::error_category identifiziert, aber im Gegensatz zu std::error_code ist der Wert nicht plattformabhängig.
Eine typische Implementierung speichert ein Integer-Datenelement (den Wert) und einen Zeiger auf eine std::error_category.
Inhalt |
[bearbeiten] Memberfunktionen
konstruiert ein error_condition(public member function) | |
| ersetzt den Inhalt (public member function) | |
| ersetzt den Inhalt (public member function) | |
setzt die error_condition auf den Wert 0 in generic_category(public member function) | |
ruft den Wert der error_condition ab(public member function) | |
ruft die error_category für diese error_condition ab(public member function) | |
| ruft die erklärende Zeichenkette ab (public member function) | |
| prüft, ob der Wert ungleich Null ist (public member function) |
[bearbeiten] Nicht-Member-Funktionen
| (entfernt in C++20)(entfernt in C++20)(C++20) |
vergleicht error_conditions und error_codes(function) |
[bearbeiten] Hilfsklassen
| (C++11) |
identifiziert eine Aufzählung als eine std::error_condition (class template) |
| hash-Unterstützung für std::error_condition (class template specialization) |
[bearbeiten] Anmerkungen
Der Vergleich zwischen einer std::error_code und einer std::error_condition wird durch ihre Fehlerkategorien definiert. Insbesondere kann eine Fehlerbedingung von std::generic_category mit einem Fehlercode einer bestimmten Kategorie (z. B. std::system_category) gleich verglichen werden, wenn sie die gleiche Art von Fehler darstellen.
Ein std::errc-Wert kann durch implizite Konvertierung zu std::error_condition mit einem Fehlercode verglichen werden.
#include <cerrno> #include <iostream> #include <system_error> #include <Windows.h> int main() { std::error_code ec{ERROR_FILE_EXISTS, std::system_category()}; std::error_condition econd{EEXIST, std::generic_category()}; std::cout.setf(std::ios::boolalpha); std::cout << (ec == econd) << '\n'; // typically true std::cout << (ec == std::errc::file_exists) << '\n'; // ditto std::cout << (ec == make_error_code(std::errc::file_exists)) << '\n'; // false: // different category }
Mögliche Ausgabe
true true false
[bearbeiten] Siehe auch
| (C++11) |
enthält einen plattformabhängigen Fehlercode (Klasse) |
| (C++11) |
Basisklasse für Fehlerkategorien (Klasse) |
erstellt eine Fehlerbedingung für einen errc-Wert e(function) |