C++ 命名要求: Formatter (C++20 起)
来自 cppreference.cn
Formatter 是一种抽象了给定格式化参数类型和字符类型的格式化操作的类型。标准库提供的 std::formatter
特化必须满足 Formatter 的要求,除非另有说明。
Formatter 能够格式化 const 和非 const 参数,通常通过提供一个接受 const 引用的 format
成员函数。
[编辑] 要求
如果一个类型满足 BasicFormatter 并且给定以下类型和值,则下表中所示的表达式是有效的并具有指示的语义,则该类型满足 Formatter
类型 | 定义 |
CharT
|
字符类型 |
Arg
|
格式化参数类型 |
格式化器(Formatter)
|
用于类型 Arg 和 CharT 的 Formatter 类型 |
OutputIt
|
旧版输出迭代器 类型 |
ParseCtx
|
std::basic_format_parse_context < CharT>
|
FmtCtx
|
std::basic_format_context < OutputIt, CharT>
|
值 | 定义 |
f | 类型为(可能带有 const 限定符)Formatter 的值 |
arg | 类型为 Arg 的左值 |
t | 可转换为(可能带有 const 限定符)Arg 的类型的值 |
parse_ctx | 类型为 ParseCtx 的左值,满足以下所有条件
|
fmt_ctx | 类型为 FmtCtx 的左值 |
表达式 | 返回类型 | 语义 |
---|---|---|
f.format(t, fmt_ctx) | FmtCtx::iterator
|
|
f.format(arg, fmt_ctx) | FmtCtx::iterator
|
如上所述,但不修改 arg。 |
[编辑] 缺陷报告
下列更改行为的缺陷报告追溯地应用于以前出版的 C++ 标准。
缺陷报告 | 应用于 | 发布时的行为 | 正确的行为 |
---|---|---|---|
LWG 3892 | C++20 | 如果 format-spec 不存在,则 pc.begin() 的值不明确 | 已明确 |