C++ 命名要求: Formatter (C++20 起)
Formatter 是一种抽象了给定格式化参数类型和字符类型的格式化操作的类型。标准库提供的 std::formatter 特化要求满足 Formatter 的要求,除非另有说明。
Formatter 能够格式化 const 和非 const 参数,通常通过提供一个接受 const 引用的格式化成员函数。
要求
如果一个类型满足 BasicFormatter,并且给定以下条件,则它满足 Formatter:
Arg
,一种格式化参数类型CharT
,一个字符类型Formatter
,用于类型 Arg 和 CharT 的 Formatter 类型OutputIt
,一种 LegacyOutputIterator 类型f
,一个(可能是 const)Formatter 类型的值g
,一个 Formatter 类型的值arg
,一个 Arg 类型的左值t
,一个可转换为(可能是 const)Arg 类型的值ParseContext
,std::basic_format_parse_context<CharT>
的别名FormatContext
,std::basic_format_context<OutputIt, CharT>
的别名parse_ctx
,一个 ParseContext 类型的左值format_ctx
,一个 FormatContext 类型的左值
表达式 | 返回类型 | 语义 |
---|---|---|
f.format(t, format_ctx) | FormatContext::iterator | * 根据存储在 f 中的说明符格式化 t ,将输出写入 format_ctx.out() 并返回输出范围的结束迭代器。* 输出仅依赖于 * t ,* format_ctx.locale() ,* 上次调用 f.parse(parse_ctx) 的范围 [parse_ctx.begin(), parse_ctx.end()) ,以及f.parse(parse_ctx) ,以及* 对于任何 std::size_t 类型的值 n 的 format_ctx.arg(n) 。 |
f.format(arg, format_ctx) | FormatContext::iterator | 如上,但不修改 arg 。 |