C++ named requirements: Formatter (since C++20)
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 :
|
| fmt_ctx |
une lvalue de type
FmtCtx
|
| Expression | Type de retour | Sémantique |
|---|---|---|
| f. format ( t, fmt_ctx ) |
FmtCtx::iterator
|
|
| 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é |