Namespaces
Variants

std:: error_condition

From cppreference.net
Utilities library
Défini dans l'en-tête <system_error>
class error_condition ;
(depuis C++11)

std::error_condition contient une valeur indépendante de la plateforme identifiant une condition d'erreur. Comme std::error_code , elle est identifiée de manière unique par une valeur entière et une std::error_category , mais contrairement à std::error_code , la valeur ne dépend pas de la plateforme.

Une implémentation typique contient un membre de données entier (la valeur) et un pointeur vers une std::error_category .

Table des matières

Fonctions membres

construit un error_condition
(fonction membre publique)
remplace le contenu
(fonction membre publique)
remplace le contenu
(fonction membre publique)
définit le error_condition à la valeur 0 dans generic_category
(fonction membre publique)
obtient la valeur du error_condition
(fonction membre publique)
obtient la error_category pour ce error_condition
(fonction membre publique)
obtient la chaîne explicative
(fonction membre publique)
vérifie si la valeur est non nulle
(fonction membre publique)

Fonctions non membres

(supprimé en C++20) (supprimé en C++20) (C++20)
compare les error_condition et les error_code
(fonction)

Classes d'assistance

identifie une énumération comme étant un std::error_condition
(modèle de classe)
support du hachage pour std::error_condition
(spécialisation de modèle de classe)

Notes

La comparaison entre un std::error_code et un std::error_condition est définie par leurs catégories d'erreur. Notamment, une condition d'erreur de std::generic_category peut être égale à un code d'erreur d'une catégorie spécifique (par exemple std::system_category ), s'ils représentent le même type d'erreur.

Une valeur std::errc peut être comparée à un code d'erreur via la conversion implicite en std::error_condition .

#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'; // généralement vrai
    std::cout << (ec == std::errc::file_exists) << '\n'; // idem
    std::cout << (ec == make_error_code(std::errc::file_exists)) << '\n'; // faux :
                                                                     // catégorie différente
}

Sortie possible :

true
true
false

Voir aussi

(C++11)
contient un code d'erreur dépendant de la plateforme
(classe)
classe de base pour les catégories d'erreur
(classe)
crée une condition d'erreur pour une valeur errc e
(fonction)