C++ benannte Anforderungen: Formatter (seit C++20)
Formatter ist ein Typ, der Formatierungsoperationen für einen gegebenen Formatierungsargumenttyp und Zeichentyp abstrahiert. Spezialisierungen von std::formatter, die von der Standardbibliothek bereitgestellt werden, 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 entgegennimmt.
[bearbeiten] Anforderungen
Ein Typ erfüllt Formatter, wenn er BasicFormatter erfüllt und bei gegebenen folgenden Typen und Werten die in der folgenden Tabelle gezeigten Ausdrücke gültig sind und die angezeigte Semantik haben.
| Typ | Definition |
CharT
|
ein Zeichentyp |
Arg
|
ein Formatierungsargumenttyp |
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 |
| 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 |
|---|---|---|
| f.format(t, fmt_ctx) | FmtCtx::iterator
|
|
| f.format(arg, fmt_ctx) | FmtCtx::iterator
|
Wie oben, aber modifiziert arg nicht. |
[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 ist | wurde klargestellt |