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:
    
    error_code() noexcept;
    error_code(int val, const error_category& cat) noexcept;
    template<class ErrorCodeEnum>
      error_code(ErrorCodeEnum e) noexcept;
    
    void assign(int val, const error_category& cat) noexcept;
    template<class ErrorCodeEnum>
      error_code& operator=(ErrorCodeEnum e) noexcept;
    void clear() noexcept;
    
    int 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_;                   
    const error_category* cat_; 
  };
  
  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);
}