Requisitos denominados de C++: BasicFormatter (desde C++20)
De cppreference.com
BasicFormatter es un tipo que abstrae las operaciones de formato para un tipo de argumento de formato y un tipo de caracter determinados.
Se requieren especializaciones de std::formatter para cumplir con los requisitos de BasicFormatter.
Un BasicFormatter es un Formatter si es capaz de formatear argumentos const y no-const.
Requisitos
Un tipo satisface BasicFormatter si este es semiregular, es decir, que satisface:
Y, dados los siguientes tipos y valores, las expresiones mostradas en la siguiente tabla son válidas y tienen la semántica indicada:
| Tipo | Definición |
CharT
|
un tipo caracter |
Arg
|
un tipo de argumento de formato |
Formatter
|
un tipo Formatter para tipos Arg y CharT
|
OutputIt
|
un tipo OutputIterator |
ParseCtx
|
std::basic_format_parse_context<CharT>
|
FmtCtx
|
std::basic_format_context<OutputIt, CharT>
|
| Valor | Definición |
f
|
un valor de tipo (posiblemente calificado const) Formatter
|
g
|
un valor de tipo Formatter
|
arg
|
un l-valor de tipo Arg
|
t
|
un valor de tipo convertible a (posiblemente calificado const) Arg
|
parse_ctx
|
un l-valor de tipo ParseCtx que satisfaga todas las siguientes condiciones:
|
fmt_ctx
|
un l-valor de tipo FmtCtx
|
| Expresión | Tipo de retorno | Semánticas |
|---|---|---|
g.parse(parse_ctx)
|
ParseCtx::iterator
|
|
f.format(arg, fmt_ctx)
|
FmtCtx::iterator
|
|
- ↑ Esto permite a los formateadores emitir mensajes de errores significativos.
Informes de defectos
Los siguientes informes de defectos de cambio de comportamiento se aplicaron de manera retroactiva a los estándares de C++ publicados anteriormente.
| ID | Aplicado a | Comportamiento según lo publicado | Comportamiento correcto |
|---|---|---|---|
| LWG 3892 | C++20 | el valor de pc.begin() no estaba claro si la especificación de formato no está presente
|
aclarado |