Namespaces
Variants

C++ named requirements: Formatter (since C++20)

From cppreference.net
C++ named requirements

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:
  • parse_ctx. begin ( ) zeigt auf den Anfang der Format-Spezifikation des zu formatierenden Ersetzungsfelds in der Formatzeichenkette .
  • Wenn Format-Spezifikation nicht vorhanden oder leer ist, dann gilt entweder parse_ctx. begin ( ) == parse_ctx. end ( ) oder * parse_ctx. begin ( ) == '}' .
fmt_ctx ein Lvalue vom Typ FmtCtx
Expression Rückgabetyp Semantik
f. format ( t, fmt_ctx ) FmtCtx::iterator
  • Formatiert t gemäß den in f gespeicherten Spezifizierern, schreibt die Ausgabe in fmt_ctx. out ( ) und gibt einen End-Iterator des Ausgabebereichs zurück.
  • Die Ausgabe darf nur abhängen von:
    • t ,
    • fmt_ctx. locale ( ) ,
    • dem Bereich [ parse_ctx. begin ( ) , parse_ctx. end ( ) ) vom letzten Aufruf von f. parse ( parse_ctx ) , und
    • fmt_ctx. arg ( n ) für jeden Wert n vom Typ std::size_t .
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