Namespaces
Variants

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

From cppreference.net
C++ named requirements

Formatter est un type qui abstrait les opérations de formatage pour un type d'argument de formatage et un type de caractère donnés. Les spécialisations de std::formatter fournies par la bibliothèque standard doivent satisfaire aux exigences de Formatter sauf indication contraire.

Un Formatter est capable de formater à la fois des arguments const et non-const, généralement en fournissant une fonction membre format qui prend une référence constante.

Exigences

Un type satisfait Formatter s'il satisfait BasicFormatter et étant donné les types et valeurs suivants, les expressions indiquées dans le tableau ci-dessous sont valides et possèdent la sémantique indiquée :

Type Définition
CharT un type de caractère
Arg un type d'argument de formatage
Formatter un type Formatter pour les types Arg et CharT
OutputIt un type LegacyOutputIterator
ParseCtx std:: basic_format_parse_context < CharT >
FmtCtx std:: basic_format_context < OutputIt, CharT >
Valeur Définition
f une valeur de type (éventuellement qualifié const) Formatter
arg une lvalue de type Arg
t une valeur de type convertible en (éventuellement qualifié const) Arg
parse_ctx une lvalue de type ParseCtx satisfaisant toutes les conditions suivantes :
  • parse_ctx. begin ( ) pointe vers le début de la spécification de format du champ de remplacement en cours de formatage dans la chaîne de format .
  • Si la spécification de format n'est pas présente ou est vide, alors soit parse_ctx. begin ( ) == parse_ctx. end ( ) soit * parse_ctx. begin ( ) == '}' .
fmt_ctx une lvalue de type FmtCtx
Expression Type de retour Sémantique
f. format ( t, fmt_ctx ) FmtCtx::iterator
  • Formate t selon les spécificateurs stockés dans f , écrit la sortie vers fmt_ctx. out ( ) et retourne un itérateur de fin de la plage de sortie.
  • La sortie ne peut dépendre que de
    • t ,
    • fmt_ctx. locale ( ) ,
    • la plage [ parse_ctx. begin ( ) , parse_ctx. end ( ) ) du dernier appel à f. parse ( parse_ctx ) , et
    • fmt_ctx. arg ( n ) pour toute valeur n de type std::size_t .
f. format ( arg, fmt_ctx ) FmtCtx::iterator Comme ci-dessus, mais ne modifie pas arg .

Rapports de défauts

Les rapports de défauts modifiant le comportement suivants ont été appliqués rétroactivement aux normes C++ précédemment publiées.

DR Appliqué à Comportement tel que publié Comportement correct
LWG 3892 C++20 la valeur de pc. begin ( ) n'était pas claire si format-spec n'est pas présent clarifié