This header is part of theerror handling library.
Includes | ||
(C++20) | Three-way comparison operator support[edit] | |
Classes | ||
(C++11) | base class for error categories (class)[edit] | |
(C++11) | holds a portable error code (class)[edit] | |
(C++11) | thestd::error_condition enumeration listing all standard<cerrno> macro constants (class)[edit] | |
(C++11) | holds a platform-dependent error code (class)[edit] | |
(C++11) | exception class used to report conditions that have an error_code (class)[edit] | |
(C++11) | identifies a class as anerror_code enumeration(class template)[edit] | |
(C++11) | identifies an enumeration as anstd::error_condition (class template)[edit] | |
(C++11) | hash support forstd::error_code (class template specialization)[edit] | |
Forward declarations | ||
Defined in header <functional> | ||
(C++11) | hash function object (class template)[edit] | |
Functions | ||
(C++11) | identifies the generic error category (function)[edit] | |
(C++11) | identifies the operating system error category (function)[edit] | |
(removed in C++20)(removed in C++20)(C++20) | compares twoerror_code s(function)[edit] | |
outputs the value and the category name to an output stream (function)[edit] | ||
(C++11) | creates error code value forerrc enume(function)[edit] | |
(removed in C++20)(removed in C++20)(C++20) | compareserror_condition s anderror_code s(function)[edit] | |
creates an error condition for anerrc valuee(function)[edit] |
#include <compare> namespace std{class error_category;const error_category& generic_category()noexcept;const error_category& system_category()noexcept; class error_code;class error_condition;class system_error; template<class T>struct is_error_code_enum:public false_type{}; template<class T>struct is_error_condition_enum:public false_type{}; enumclass errc{// freestanding address_family_not_supported,// EAFNOSUPPORT address_in_use,// EADDRINUSE address_not_available,// EADDRNOTAVAIL already_connected,// EISCONN argument_list_too_long,// E2BIG argument_out_of_domain,// EDOM bad_address,// EFAULT bad_file_descriptor,// EBADF bad_message,// EBADMSG broken_pipe,// EPIPE connection_aborted,// ECONNABORTED connection_already_in_progress,// EALREADY connection_refused,// ECONNREFUSED connection_reset,// ECONNRESET cross_device_link,// EXDEV destination_address_required,// EDESTADDRREQ device_or_resource_busy,// EBUSY directory_not_empty,// ENOTEMPTY executable_format_error,// ENOEXEC file_exists,// EEXIST file_too_large,// EFBIG filename_too_long,// ENAMETOOLONG function_not_supported,// ENOSYS host_unreachable,// EHOSTUNREACH identifier_removed,// EIDRM illegal_byte_sequence,// EILSEQ inappropriate_io_control_operation,// ENOTTY interrupted,// EINTR invalid_argument,// EINVAL invalid_seek,// ESPIPE io_error,// EIO is_a_directory,// EISDIR message_size,// EMSGSIZE network_down,// ENETDOWN network_reset,// ENETRESET network_unreachable,// ENETUNREACH no_buffer_space,// ENOBUFS no_child_process,// ECHILD no_link,// ENOLINK no_lock_available,// ENOLCK no_message_available,// ENODATA no_message,// ENOMSG no_protocol_option,// ENOPROTOOPT no_space_on_device,// ENOSPC no_stream_resources,// ENOSR no_such_device_or_address,// ENXIO no_such_device,// ENODEV no_such_file_or_directory,// ENOENT no_such_process,// ESRCH not_a_directory,// ENOTDIR not_a_socket,// ENOTSOCK not_a_stream,// ENOSTR not_connected,// ENOTCONN not_enough_memory,// ENOMEM not_supported,// ENOTSUP operation_canceled,// ECANCELED operation_in_progress,// EINPROGRESS operation_not_permitted,// EPERM operation_not_supported,// EOPNOTSUPP operation_would_block,// EWOULDBLOCK owner_dead,// EOWNERDEAD permission_denied,// EACCES protocol_error,// EPROTO protocol_not_supported,// EPROTONOSUPPORT read_only_file_system,// EROFS resource_deadlock_would_occur,// EDEADLK resource_unavailable_try_again,// EAGAIN result_out_of_range,// ERANGE state_not_recoverable,// ENOTRECOVERABLE stream_timeout,// ETIME text_file_busy,// ETXTBSY timed_out,// ETIMEDOUT too_many_files_open_in_system,// ENFILE too_many_files_open,// EMFILE too_many_links,// EMLINK too_many_symbolic_link_levels,// ELOOP value_too_large,// EOVERFLOW wrong_protocol_type,// EPROTOTYPE}; template<>struct is_error_condition_enum<errc>: true_type{}; // non-member functions error_code make_error_code(errc e)noexcept; template<class CharT,class Traits> basic_ostream<CharT, Traits>& operator<<(basic_ostream<CharT, Traits>& os,const error_code& ec); // non-member functions error_condition make_error_condition(errc e)noexcept; // comparison functionsbool operator==(const error_code& lhs,const error_code& rhs)noexcept;bool operator==(const error_code& lhs,const error_condition& rhs)noexcept;bool operator==(const error_condition& lhs,const error_condition& rhs)noexcept; strong_ordering operator<=>(const error_code& lhs,const error_code& rhs)noexcept; strong_ordering operator<=>(const error_condition& lhs,const error_condition& rhs)noexcept; // hash supporttemplate<class T>struct hash;template<>struct hash<error_code>;template<>struct hash<error_condition>; // system error supporttemplate<class T>inlineconstexprbool is_error_code_enum_v= is_error_code_enum<T>::value;template<class T>inlineconstexprbool is_error_condition_enum_v= is_error_condition_enum<T>::value;}
namespace std{class error_category{public:constexpr error_category()noexcept;virtual ~error_category(); error_category(const error_category&)= delete; error_category& operator=(const error_category&)= delete;virtualconstchar* name()constnoexcept=0;virtual error_condition default_error_condition(int ev)constnoexcept;virtualbool equivalent(int code,const error_condition& condition)constnoexcept;virtualbool equivalent(const error_code& code,int condition)constnoexcept;virtual string message(int ev)const=0; bool operator==(const error_category& rhs)constnoexcept; strong_ordering operator<=>(const error_category& rhs)constnoexcept;}; const error_category& generic_category()noexcept;const error_category& system_category()noexcept;}
namespace std{class error_code{public:// constructors error_code()noexcept; error_code(int val,const error_category& cat)noexcept;template<class ErrorCodeEnum> error_code(ErrorCodeEnum e)noexcept; // modifiersvoid assign(int val,const error_category& cat)noexcept;template<class ErrorCodeEnum> error_code& operator=(ErrorCodeEnum e)noexcept;void clear()noexcept; // observersint value()constnoexcept;const error_category& category()constnoexcept; error_condition default_error_condition()constnoexcept; string message()const;explicit operatorbool()constnoexcept; private:int val_;// exposition onlyconst error_category* cat_;// exposition only}; // non-member functions error_code make_error_code(errc e)noexcept; template<class CharT,class Traits> basic_ostream<CharT, Traits>& operator<<(basic_ostream<CharT, Traits>& os,const error_code& ec);}
namespace std{class error_condition{public:// constructors error_condition()noexcept; error_condition(int val,const error_category& cat)noexcept;template<class ErrorConditionEnum> error_condition(ErrorConditionEnum e)noexcept; // modifiersvoid assign(int val,const error_category& cat)noexcept;template<class ErrorConditionEnum> error_condition& operator=(ErrorConditionEnum e)noexcept;void clear()noexcept; // observersint value()constnoexcept;const error_category& category()constnoexcept; string message()const;explicit operatorbool()constnoexcept; private:int val_;// exposition onlyconst error_category* cat_;// exposition only};}
namespace std{class system_error:public runtime_error{public: system_error(error_code ec,const string& what_arg); system_error(error_code ec,constchar* what_arg); system_error(error_code ec); system_error(int ev,const error_category& ecat,const string& what_arg); system_error(int ev,const error_category& ecat,constchar* what_arg); system_error(int ev,const error_category& ecat);const error_code& code()constnoexcept;constchar* what()constnoexcept override;};}