C++ named requirements: Formatter (since C++20)
Formatter ist ein Typ, der Formatierungsoperationen für einen gegebenen Formatierungsargumenttyp und Zeichentyp abstrahiert. Spezialisierungen von std::formatter aus der Standardbibliothek müssen die Anforderungen von Formatter erfüllen, sofern nicht anders angegeben.
Ein
Formatter
kann sowohl konstante als auch nicht-konstante Argumente formatieren, typischerweise durch Bereitstellung einer
format
Memberfunktion, die eine konstante Referenz akzeptiert.
Anforderungen
Ein Typ erfüllt Formatter , wenn er BasicFormatter erfüllt und bei den folgenden Typen und Werten die Ausdrücke in der untenstehenden Tabelle gültig sind und die angegebene Semantik haben:
| Typ | Definition |
CharT
|
ein Zeichentyp |
Arg
|
ein Formatierungsargumenttyp |
Formatter
|
ein
Formatter
-Typ für 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
|
| arg |
ein Lvalue vom Typ
Arg
|
| t |
ein Wert vom Typ konvertierbar zu (möglicherweise const-qualifiziert)
Arg
|
| parse_ctx |
ein Lvalue vom Typ
ParseCtx
, das alle folgenden Bedingungen erfüllt:
|
| fmt_ctx |
ein Lvalue vom Typ
FmtCtx
|
| Expression | Rückgabetyp | Semantik |
|---|---|---|
| f. format ( t, fmt_ctx ) |
FmtCtx::iterator
|
|
| f. format ( arg, fmt_ctx ) |
FmtCtx::iterator
|
Wie oben, modifiziert jedoch arg nicht. |
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 | der Wert von pc. begin ( ) war unklar, falls format-spec nicht vorhanden ist | klargestellt |