19 Diagnostics library [diagnostics]

19.5 System error support [syserr]

19.5.4 Class error_code [syserr.errcode]

19.5.4.6 Formatting [syserr.fmt]

template<class charT> struct formatter<error_code, charT> { constexpr void set_debug_format(); constexpr typename basic_format_parse_context<charT>::iterator parse(basic_format_parse_context<charT>& ctx); template<class Out> typename basic_format_context<Out, charT>::iterator format(const error_code& ec, basic_format_context<Out, charT>& ctx) const; };
constexpr void set_debug_format();
Effects: Modifies the state of the formatter to be as if the error-code-format-spec parsed by the last call to parse contained the ? option.
constexpr typename basic_format_parse_context<charT>::iterator parse(basic_format_parse_context<charT>& ctx);
Effects: Parses the format specifier as an error-code-format-spec and stores the parsed specifiers in *this.
The syntax of format specifications is
error-code-format-spec:
fill-and-align width ? s
where the productions fill-and-align and width are described in [format.string].
Returns: An iterator past the end of the error-code-format-spec.
template<class Out> typename basic_format_context<Out, charT>::iterator format(const error_code& ec, basic_format_context<Out, charT>& ctx) const;
Effects: If the s option is used, then:
  • If charT is char and the ordinary literal encoding is UTF-8, then let msg be ec.message() transcoded to UTF-8 with maximal subparts of ill-formed subsequences substituted with U+fffd replacement character per the Unicode Standard, Chapter 3.9 U+fffd replacement character Substitution in Conversion.
  • Otherwise, let msg be ec.message() transcoded to an implementation-defined encoding.
Otherwise, let msg be format("{}:{}", ec.category().name(), ec.value()).
If the ? option is used then msg is formatted as an escaped string ([format.string.escaped]).
Writes msg into ctx.out(), adjusted according to the error-code-format-spec.
Returns: An iterator past the end of the output range.