C++ named requirements: BasicFormatter (since C++20)
BasicFormatter 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 doivent satisfaire aux exigences de BasicFormatter .
Un BasicFormatter est un Formatter s'il est capable de formater à la fois des arguments constants et non constants.
Exigences
Un type satisfait BasicFormatter s'il est semi-régulier, ce qui signifie qu'il satisfait :
Et, étant donné les types et valeurs suivants, les expressions présenté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
|
| g |
une valeur de type
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 |
|---|---|---|
| g. parse ( parse_ctx ) |
ParseCtx::iterator
|
|
| f. format ( arg, fmt_ctx ) |
FmtCtx::iterator
|
|
- ↑ Cela permet aux formateurs d'émettre des messages d'erreur significatifs.
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é |