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.
[editar] 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.
[editar] 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 |