22 Diagnostics library [diagnostics]

22.5 System error support [syserr]

22.5.4 Class error_­condition [syserr.errcondition]

22.5.4.1 Class error_­condition overview [syserr.errcondition.overview]

Класс error_­condition описывает объект, используемый для хранения значений, идентифицирующих условия ошибки. [ Note: error_­condition значения - это переносимые абстракции, а error_­code значения зависят от реализации. ] end note

namespace std {
  class error_condition {
  public:
    // [syserr.errcondition.constructors], constructors
    error_condition() noexcept;
    error_condition(int val, const error_category& cat) noexcept;
    template <class ErrorConditionEnum>
      error_condition(ErrorConditionEnum e) noexcept;

    // [syserr.errcondition.modifiers], modifiers
    void assign(int val, const error_category& cat) noexcept;
    template <class ErrorConditionEnum>
      error_condition& operator=(ErrorConditionEnum e) noexcept;
    void clear() noexcept;

    // [syserr.errcondition.observers], observers
    int value() const noexcept;
    const error_category& category() const noexcept;
    string message() const;
    explicit operator bool() const noexcept;

  private:
    int val_;                   // exposition only
    const error_category* cat_; // exposition only
  };
}

22.5.4.2 Class error_­condition constructors [syserr.errcondition.constructors]

error_condition() noexcept;

Effects: Создает объект типа error_­condition.

Postconditions: val_­ == 0 и cat_­ == &generic_­category().

error_condition(int val, const error_category& cat) noexcept;

Effects: Создает объект типа error_­condition.

Postconditions: val_­ == val и cat_­ == &cat.

template <class ErrorConditionEnum> error_condition(ErrorConditionEnum e) noexcept;

Effects: Создает объект типа error_­condition.

Postconditions: *this == make_­error_­condition(e).

Remarks: Этот конструктор не должен участвовать в разрешении перегрузки , если
is_­error_­condition_­enum_­v<ErrorConditionEnum> не true.

22.5.4.3 Class error_­condition modifiers [syserr.errcondition.modifiers]

void assign(int val, const error_category& cat) noexcept;

Postconditions: val_­ == val и cat_­ == &cat.

template <class ErrorConditionEnum> error_condition& operator=(ErrorConditionEnum e) noexcept;

Postconditions: *this == make_­error_­condition(e).

Returns: *this.

Remarks: Этот оператор не должен участвовать в разрешении перегрузки , если
is_­error_­condition_­enum_­v<ErrorConditionEnum> не true.

void clear() noexcept;

Postconditions: value() == 0 и category() == generic_­category().

22.5.4.4 Class error_­condition observers [syserr.errcondition.observers]

int value() const noexcept;

Returns: val_­.

const error_category& category() const noexcept;

Returns: *cat_­.

string message() const;

Returns: category().message(value()).

explicit operator bool() const noexcept;

Returns: value() != 0.

22.5.4.5 Class error_­condition non-member functions [syserr.errcondition.nonmembers]

error_condition make_error_condition(errc e) noexcept;

Returns: error_­condition(static_­cast<int>(e), generic_­category()).