Namespaces
Variants
Actions

std::error_condition

From cppreference.com
< cpp‎ | error
 
 
Utilities library
General utilities
Relational operators (deprecated in C++20)
(C++20)(C++20)(C++20)  
(C++20)
(C++20)
(C++14)
(C++11)
(C++11)
(C++23)
(C++11)
(C++17)
Common vocabulary types
(C++11)
(C++17)
(C++17)
(C++17)
(C++11)
(C++17)
(C++23)


 
Diagnostics library
 
 
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 .

[edit] Member functions

constructs an error_condition
(public member function) [edit]
replaces the contents
(public member function) [edit]
replaces the contents
(public member function) [edit]
sets the error_condition to value 0 in generic_category
(public member function) [edit]
obtains the value of the error_condition
(public member function) [edit]
obtains the error_category for this error_condition
(public member function) [edit]
obtains the explanatory string
(public member function) [edit]
checks if the value is non-zero
(public member function) [edit]

[edit] Non-member functions

(removed in C++20)(removed in C++20)(C++20)
compares error_conditions and error_codes
(function) [edit]

[edit] Helper classes

identifies an enumeration as an std::error_condition
(class template) [edit]
hash support for std::error_condition
(class template specialization) [edit]

[edit] 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.

Run this code
#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

[edit] See also

(C++11)
holds a platform-dependent error code
(class) [edit]
base class for error categories
(class) [edit]
creates an error condition for an errc value e
(function) [edit]
Retrieved from "https://en.cppreference.com/mwiki/index.php?title=cpp/error/error_condition&oldid=172315"

AltStyle によって変換されたページ (->オリジナル) /