[value.error.codes]

# 16 Library introduction [[library]](./#library)

## 16.4 Library-wide requirements [[requirements]](requirements#value.error.codes)

### 16.4.6 Conforming implementations [[conforming]](conforming#value.error.codes)

#### 16.4.6.16 Value of error codes [value.error.codes]

[1](#1)

[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/lib-intro.tex#L3969)

Certain functions in the C++ standard library report errors via aerror_code ([[syserr.errcode.overview]](syserr.errcode.overview "19.5.4.1 Overview")) object[.](#1.sentence-1)

That object'scategory() member shall return system_category() for
errors originating from the operating system, or a reference to animplementation-defined error_category object for errors originating elsewhere[.](#1.sentence-2)

The implementation shall define the possible values of value() for each of these
error categories[.](#1.sentence-3)

[*Example [1](#example-1)*:

For operating systems that are based on POSIX,
implementations should define the std​::​system_category() values as
identical to the POSIX errno values, with additional values as defined by the
operating system's documentation[.](#1.sentence-4)

Implementations for operating systems that are not
based on POSIX should define values identical to the operating system's
values[.](#1.sentence-5)

For errors that do not originate from the operating system, the implementation
may provide enums for the associated values[.](#1.sentence-6)

â *end example*]
