C++ benannte Anforderungen: BasicFormatter (seit C++20)
Von cppreference.com
< cpp | benannte req
BasicFormatter ist ein Typ, der Formatierungsoperationen für einen gegebenen Argumenttyp und Zeichentyp abstrahiert. Spezialisierungen von std::formatter müssen die Anforderungen von BasicFormatter erfüllen.
Ein BasicFormatter ist ein Formatter, wenn er sowohl konstante als auch nicht-konstante Argumente formatieren kann.
[bearbeiten] Anforderungen
Ein Typ erfüllt BasicFormatter, wenn er semiregular ist, was bedeutet, dass er Folgendes erfüllt:
Und, unter den folgenden Typen und Werten, sind die in der folgenden Tabelle gezeigten Ausdrücke gültig und haben die angegebene Semantik
| Typ | Definition |
CharT
|
ein Zeichentyp |
Arg
|
ein Argumenttyp für die Formatierung |
Formatter
|
ein Formatter-Typ für die Typen Arg und CharT |
OutputIt
|
ein LegacyOutputIterator-Typ |
ParseCtx
|
std::basic_format_parse_context<CharT> |
FmtCtx
|
std::basic_format_context<OutputIt, CharT> |
| Wert | Definition |
| f | ein Wert vom Typ (möglicherweise const-qualifiziert) Formatter |
| g | ein Wert vom Typ Formatter |
| arg | ein lvalue vom Typ Arg |
| t | ein Wert vom Typ, der nach (möglicherweise const-qualifiziert) Arg konvertierbar ist |
| parse_ctx | ein lvalue vom Typ ParseCtx, der alle folgenden Bedingungen erfüllt
|
| fmt_ctx | ein lvalue vom Typ FmtCtx |
| Ausdruck | Rückgabetyp | Semantik |
|---|---|---|
| g.parse(parse_ctx) | ParseCtx::iterator
|
|
| f.format(arg, fmt_ctx) | FmtCtx::iterator
|
|
- ↑ Dies ermöglicht Formatierern, aussagekräftige Fehlermeldungen auszugeben.
[bearbeiten] Fehlerberichte
Die folgenden Verhaltensändernden Fehlerberichte wurden rückwirkend auf zuvor veröffentlichte C++-Standards angewendet.
| DR | angewendet auf | Verhalten wie veröffentlicht | Korrigiertes Verhalten |
|---|---|---|---|
| LWG 3892 | C++20 | war der Wert von pc.begin() unklar, wenn format-spec nicht vorhanden war | wurde klargestellt |