Files
cppdraft_translate/cppdraft/syserr/errcode.md
2025-10-25 03:02:53 +03:00

7.0 KiB

[syserr.errcode]

19 Diagnostics library [diagnostics]

19.5 System error support [syserr]

19.5.4 Class error_code [syserr.errcode]

19.5.4.1 Overview [syserr.errcode.overview]

1

#

The class error_code describes an object used to hold error code values, such as those originating from the operating system or other low-level application program interfaces.

[Note 1:

Class error_code is an adjunct to error reporting by exception.

— end note]

🔗

namespace std {class error_code {public:// [syserr.errcode.constructors], constructors error_code() noexcept; error_code(int val, const error_category& cat) noexcept; template error_code(ErrorCodeEnum e) noexcept; // [syserr.errcode.modifiers], modifiersvoid assign(int val, const error_category& cat) noexcept; template error_code& operator=(ErrorCodeEnum e) noexcept; void clear() noexcept; // [syserr.errcode.observers], observersint value() const noexcept; const error_category& category() const noexcept; error_condition default_error_condition() const noexcept; string message() const; explicit operator bool() const noexcept; private:int val_; // exposition onlyconst error_category* cat_; // exposition only}; // [syserr.errcode.nonmembers], 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);}

19.5.4.2 Constructors [syserr.errcode.constructors]

🔗

error_code() noexcept;

1

#

Effects: Initializes val_ with 0 and cat_ with &system_category().

🔗

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

2

#

Effects: Initializes val_ with val and cat_ with &cat.

🔗

template<class ErrorCodeEnum> error_code(ErrorCodeEnum e) noexcept;

3

#

Constraints: is_error_code_enum_v is true.

4

#

Effects: Equivalent to:error_code ec = make_error_code(e); assign(ec.value(), ec.category());

19.5.4.3 Modifiers [syserr.errcode.modifiers]

🔗

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

1

#

Postconditions: val_ == val and cat_ == &cat.

🔗

template<class ErrorCodeEnum> error_code& operator=(ErrorCodeEnum e) noexcept;

2

#

Constraints: is_error_code_enum_v is true.

3

#

Effects: Equivalent to:error_code ec = make_error_code(e); assign(ec.value(), ec.category());

4

#

Returns: *this.

🔗

void clear() noexcept;

5

#

Postconditions: value() == 0 and category() == system_category().

19.5.4.4 Observers [syserr.errcode.observers]

🔗

int value() const noexcept;

1

#

Returns: val_.

🔗

const error_category& category() const noexcept;

2

#

Returns: **cat_*.

🔗

error_condition default_error_condition() const noexcept;

3

#

Returns: category().default_error_condition(value()).

🔗

string message() const;

4

#

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

🔗

explicit operator bool() const noexcept;

5

#

Returns: value() != 0.

19.5.4.5 Non-member functions [syserr.errcode.nonmembers]

🔗

error_code make_error_code(errc e) noexcept;

1

#

Returns: error_code(static_cast(e), generic_category()).

🔗

template<class charT, class traits> basic_ostream<charT, traits>& operator<<(basic_ostream<charT, traits>& os, const error_code& ec);

2

#

Effects: Equivalent to: return os << ec.category().name() << ':' << ec.value();