22 Diagnostics library [diagnostics]

22.5 System error support [syserr]

22.5.2 Class error_­category [syserr.errcat]

22.5.2.1 Class error_­category overview [syserr.errcat.overview]

Класс error_­category служит базовым классом для типов, используемых для идентификации источника и кодирования конкретной категории кода ошибки. Классы могут быть производными error_­category для поддержки категорий ошибок в дополнение к тем, которые определены в этом международном стандарте. Такие классы должны вести себя, как указано в этом подпункте. [ Note: error_­category объекты передаются по ссылке, и два таких объекта равны, если у них одинаковый адрес. Это означает, что приложения, использующие настраиваемые error_­category типы, должны создавать по одному объекту каждого такого типа. ] 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;
    bool operator!=(const error_category& rhs) const noexcept;
    bool operator<(const error_category& rhs) const noexcept;
  };

  const error_category& generic_category() noexcept;
  const error_category& system_category() noexcept;
}