[syserr.errcode.overview] # 19 Diagnostics library [[diagnostics]](./#diagnostics) ## 19.5 System error support [[syserr]](syserr#errcode.overview) ### 19.5.4 Class error_code [[syserr.errcode]](syserr.errcode#overview) #### 19.5.4.1 Overview [syserr.errcode.overview] [1](#1) [#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/diagnostics.tex#L1009) 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[.](#1.sentence-1) [*Note [1](#note-1)*: Class error_code is an adjunct to error reporting by exception[.](#1.sentence-2) — *end note*] [🔗](#lib:error_code) namespace std {class error_code {public:// [[syserr.errcode.constructors]](syserr.errcode.constructors "19.5.4.2 Constructors"), constructors error_code() noexcept; error_code(int val, const error_category& cat) noexcept; template error_code(ErrorCodeEnum e) noexcept; // [[syserr.errcode.modifiers]](syserr.errcode.modifiers "19.5.4.3 Modifiers"), modifiersvoid assign(int val, const error_category& cat) noexcept; template error_code& operator=(ErrorCodeEnum e) noexcept; void clear() noexcept; // [[syserr.errcode.observers]](syserr.errcode.observers "19.5.4.4 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 only*const error_category* *cat_*; // *exposition only*}; // [[syserr.errcode.nonmembers]](syserr.errcode.nonmembers "19.5.4.5 Non-member functions"), non-member functions error_code make_error_code(errc e) noexcept; template basic_ostream&operator<<(basic_ostream& os, const error_code& ec);}