Namespaces
Variants

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

From cppreference.net
C++ named requirements

BasicFormatter ist ein Typ, der Formatierungsoperationen für einen gegebenen Formatierungsargumenttyp 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.

Anforderungen

Ein Typ erfüllt BasicFormatter wenn er semiregulär ist, was bedeutet, dass er folgende Bedingungen erfüllt:

Und, bei den folgenden Typen und Werten sind die in der nachstehenden Tabelle gezeigten Ausdrücke gültig und haben die angegebene Semantik:

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
g ein Wert vom Typ 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 Ersetzungsfeldes, das in der Formatzeichenfolge formatiert wird.
  • Wenn Format-Spezifikation nicht vorhanden oder leer ist, dann entweder parse_ctx. begin ( ) == parse_ctx. end ( ) oder * parse_ctx. begin ( ) == '}' .
fmt_ctx ein Lvalue vom Typ FmtCtx
Ausdruck Rückgabetyp Semantik
g. parse ( parse_ctx ) ParseCtx::iterator
  • Parst im Bereich [ parse_ctx. begin ( ) , parse_ctx. end ( ) ) die Format-Spezifikation für den Typ Arg bis zum ersten nicht übereinstimmenden Zeichen.
  • Löst std::format_error aus, es sei denn, der gesamte Bereich wird geparst oder das nicht übereinstimmende Zeichen ist } . [Anmerkung 1]
  • Speichert die geparsten Format-Spezifikationen in g und gibt einen End-Iterator des geparsten Bereichs zurück.
f. format ( arg, fmt_ctx ) FmtCtx::iterator
  • Formatiert arg gemäß den in f gespeicherten Spezifikationen, schreibt die Ausgabe nach fmt_ctx. out ( ) und gibt einen End-Iterator des Ausgabebereichs zurück.
  • Die Ausgabe darf nur abhängen von
    • arg ,
    • 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 .
  1. Dies ermöglicht es Formatern, aussagekräftige Fehlermeldungen auszugeben.

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