home | help
std::error_condition(3)        C++ Standard Libary	 std::error_condition(3)

NAME
     std::error_condition - std::error_condition

Synopsis
	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
	constructor   constructs an error_condition
		      (public member function)
	operator=     replaces the contents
		      (public member function)
	assign	      replaces the contents
		      (public member function)
	clear	      sets the error_condition to value 0 in generic_category
		      (public member function)
	value	      obtains the value of the error_condition
		      (public member function)
	category      obtains the error_category for this error_condition
		      (public member function)
	message       obtains the explanatory string
		      (public member function)
	operator bool checks if the value is non-zero
		      (public member function)

Non-member functions
	operator==
	operator!=
	operator<	   compares error_conditions and error_codes
	operator<=>	   (function)
	(removed in C++20)
	(removed in C++20)
	(C++20)

Helper classes
	is_error_condition_enum 	identifies an enumeration as an std::er-
     ror_condition
	(C++11) 			(class template)
	std::hash<std::error_condition> hash support for std::error_condition
	(C++17) 			(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_cat-
     egory may
	compare  equal	to  an error code of a specific category (e.g. std::sys-
     tem_category),
	if they represent the same kind of error.

	A std::errc value can be compared to an error code via implicit  conver-
     sion 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

See also
	error_code			holds a platform-dependent error code
	(C++11) 			(class)
	error_category			base class for error categories
	(C++11) 			(class)
	make_error_condition(std::errc) creates an error condition for	an  errc
     value e
	(C++11) 			(function)

http://cppreference.com 	   2024.06.10		 std::error_condition(3)

home | help