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