C++ named requirements: Formatter (since C++20)
Formatter es un tipo que abstrae las operaciones de formato para un tipo de argumento de formato y tipo de carácter dados. Las especializaciones de std::formatter proporcionadas por la biblioteca estándar deben cumplir con los requisitos de Formatter excepto cuando se indique lo contrario.
Un
Formatter
puede formatear tanto argumentos const como no const, típicamente proporcionando una función miembro
format
que toma una referencia const.
Requisitos
Un tipo satisface Formatter si satisface BasicFormatter y dados los siguientes tipos y valores, las expresiones mostradas en la tabla a continuación son válidas y tienen la semántica indicada:
| Tipo | Definición |
CharT
|
un tipo de carácter |
Arg
|
un tipo de argumento de formato |
Formatter
|
un tipo
Formatter
para los tipos
Arg
y
CharT
|
OutputIt
|
un tipo LegacyOutputIterator |
ParseCtx
|
std:: basic_format_parse_context < CharT > |
FmtCtx
|
std:: basic_format_context < OutputIt, CharT > |
| Valor | Definición |
| f |
un valor de tipo (posiblemente calificado como const)
Formatter
|
| arg |
un lvalue de tipo
Arg
|
| t |
un valor de tipo convertible a (posiblemente calificado como const)
Arg
|
| parse_ctx |
un lvalue de tipo
ParseCtx
que satisface todas las siguientes condiciones:
|
| fmt_ctx |
un lvalue de tipo
FmtCtx
|
| Expresión | Tipo de retorno | Semántica |
|---|---|---|
| f. format ( t, fmt_ctx ) |
FmtCtx::iterator
|
|
| f. format ( arg, fmt_ctx ) |
FmtCtx::iterator
|
Como arriba, pero no modifica arg . |
Informes de defectos
Los siguientes informes de defectos que modifican el comportamiento se aplicaron retroactivamente a los estándares publicados anteriormente de C++.
| DR | Aplicado a | Comportamiento publicado | Comportamiento correcto |
|---|---|---|---|
| LWG 3892 | C++20 | el valor de pc. begin ( ) no estaba claro si format-spec no está presente | aclarado |