[syserr.errcat.overview] (original) (raw)

The class error_category serves as a base class for types used to identify the source and encoding of a particular category of error code.

Classes may be derived from error_category to support categories of errors in addition to those defined in this document.

Such classes shall behave as specified in subclause [syserr.errcat].

[Note 1:

error_category objects are passed by reference, and two such objects are equal if they have the same address.

If there is more than a single object of a custom error_category type, such equality comparisons can evaluate to falseeven for objects holding the same value.

— _end note_]

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;virtual const char* name() const noexcept = 0;virtual error_condition default_error_condition(int ev) const noexcept;virtual bool equivalent(int code, const error_condition& condition) const noexcept;virtual bool equivalent(const error_code& code, int condition) const noexcept;virtual string message(int ev) const = 0;bool operator==(const error_category& rhs) const noexcept; strong_ordering operator<=>(const error_category& rhs) const noexcept;};const error_category& generic_category() noexcept;const error_category& system_category() noexcept;}