C++ named requirements: BasicFormatter (since C++20)
BasicFormatter — это тип, абстрагирующий операции форматирования для заданного типа аргумента форматирования и символьного типа. Специализации std::formatter должны соответствовать требованиям BasicFormatter .
BasicFormatter является Formatter если он способен форматировать как константные, так и неконстантные аргументы.
Требования
Тип удовлетворяет требованиям BasicFormatter если он является полурегулярным, что означает выполнение следующих условий:
И, учитывая следующие типы и значения, выражения, приведенные в таблице ниже, являются допустимыми и имеют указанную семантику:
| Тип | Определение |
CharT
|
тип символа |
Arg
|
тип аргумента форматирования |
Formatter
|
тип
Formatter
для типов
Arg
и
CharT
|
OutputIt
|
тип LegacyOutputIterator |
ParseCtx
|
std:: basic_format_parse_context < CharT > |
FmtCtx
|
std:: basic_format_context < OutputIt, CharT > |
| Значение | Определение |
| f |
значение типа (возможно const-квалифицированного)
Formatter
|
| g |
значение типа
Formatter
|
| arg |
lvalue типа
Arg
|
| t |
значение типа, преобразуемого в (возможно const-квалифицированный)
Arg
|
| parse_ctx |
lvalue типа
ParseCtx
, удовлетворяющее всем следующим условиям:
|
| fmt_ctx |
lvalue типа
FmtCtx
|
| Выражение | Тип возвращаемого значения | Семантика |
|---|---|---|
| g. parse ( parse_ctx ) |
ParseCtx::iterator
|
|
| f. format ( arg, fmt_ctx ) |
FmtCtx::iterator
|
|
- ↑ Это позволяет форматтерам выводить информативные сообщения об ошибках.
Отчеты о дефектах
Следующие отчеты об изменениях в поведении, содержащие описания дефектов, были применены ретроактивно к ранее опубликованным стандартам C++.
| DR | Applied to | Behavior as published | Correct behavior |
|---|---|---|---|
| LWG 3892 | C++20 | значение pc. begin ( ) было неясным, если format-spec отсутствует | прояснено |