std:: error_condition
|
|
|
|
Member functions | ||||
Non-member functions | ||||
(until C++20)
(until C++20)
(C++20)
|
||||
Helper classes | ||||
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_condition
s and
error_code
s
(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) |