C++ 命名要求: BasicFormatter (自 C++20 起)
来自 cppreference.com
BasicFormatter 是一个类型,它为给定的格式化参数类型和字符类型抽象格式化操作。需要 std::formatter 的特化以满足 BasicFormatter 的要求。
如果 BasicFormatter 能够格式化 const 和非 const 参数,则它是 Formatter。
[编辑] 要求
如果一个类型是半正则的,那么它就满足 BasicFormatter,这意味着它满足
并且,在给定以下类型和值的情况下,下表中显示的表达式是有效的,并且具有指示的语义
类型 | 定义 |
CharT
|
一个字符类型 |
Arg
|
一个格式化参数类型 |
Formatter
|
类型 Arg 和 CharT 的 Formatter 类型 |
OutputIt
|
一个 LegacyOutputIterator 类型 |
ParseCtx
|
std::basic_format_parse_context<CharT> |
FmtCtx
|
std::basic_format_context<OutputIt, CharT> |
值 | 定义 |
f | 类型(可能是 const 限定的)Formatter 的一个值 |
g | 类型 Formatter 的一个值 |
arg | 类型 Arg 的一个左值 |
t | 一个可转换为(可能是 const 限定的)Arg 的类型的值 |
parse_ctx | 类型 ParseCtx 的一个左值,满足以下所有条件
|
fmt_ctx | 类型 FmtCtx 的一个左值 |
表达式 | 返回值类型 | 语义 |
---|---|---|
g.parse(parse_ctx) | ParseCtx::iterator |
|
f.format(arg, fmt_ctx) | FmtCtx::iterator
|
|
- ↑ 这允许格式化程序发出有意义的错误消息。
[编辑] 缺陷报告
以下行为更改缺陷报告被追溯应用于之前发布的 C++ 标准。
DR | 应用于 | 已发布的行为 | 正确行为 |
---|---|---|---|
LWG 3892 | C++20 | 如果 格式规范 不存在,则 pc.begin() 的值不清楚 | 已澄清 |