C++ 具名要求:格式化器 (Formatter) (C++20 起)
来自cppreference.com
格式化器 (Formatter) 是对给定的格式化参数类型及字符类型抽象格式化操作的类型。除非另外标注,标准库提供的 std::formatter 特化均满足 格式化器 (Formatter) 。
格式化器 (Formatter) 能格式化 const 与非 const 的实参,这通常以提供接收 const 引用的 format
成员函数达成。
要求
一个类型满足格式化器 (Formatter) 的条件是,它满足基本格式化器 (BasicFormatter) ,并且给定以下类型和值,下方表格列出的表达式必须合法且具有指定的语义:
类型 | 定义 |
CharT
|
字符类型 |
Arg
|
格式化实参类型 |
Formatter
|
对于类型 Arg 和 CharT 的基本格式化器 (BasicFormatter) 类型
|
OutputIt
|
老式输出迭代器 (LegacyOutputIterator) 类型 |
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 | 当格式说明 不存在时,pc.begin() 的值不明确 | 使之明确 |