std::error_condition
Defined in header <system_error> | ||
|---|---|---|
class error_condition; | (since C++11) |
std::error_condition holds a platform-independent value identifying an error condition. Like std::error_code, it is uniquely identified by an integer value and a std::error_category, but unlike std::error_code, the value is not platform-dependent.
A typical implementation holds one integer data member (the value) and a pointer to an std::error_category.
Member functions
constructs an error_condition (public member function) |
|
| replaces the contents (public member function) |
|
| replaces the contents (public member function) |
|
sets the error_condition to value 0 in generic_category (public member function) |
|
obtains the value of the error_condition (public member function) |
|
obtains the error_category for this error_condition (public member function) |
|
| obtains the explanatory string (public member function) |
|
| checks if the value is non-zero (public member function) |
Non-member functions
|
(removed in C++20)(removed in C++20)(C++20) | compares error_conditions and error_codes (function) |
Helper classes
|
(C++11) | identifies an enumeration as an std::error_condition (class template) |
|
(C++17) | hash support for std::error_condition (class template specialization) |
Notes
The comparison between a std::error_code and a std::error_condition is defined by their error categories. Notably, an error condition of std::generic_category may compare equal to an error code of a specific category (e.g. std::system_category), if they represent the same kind of error.
A std::errc value can be compared to an error code via implicit conversion to 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'; // 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
}
Possible output:
true true false
See also
|
(C++11) | holds a platform-dependent error code (class) |
|
(C++11) | base class for error categories (class) |
|
(C++11) | creates an error condition for an errc value e (function) |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/error/error_condition