跳到主要内容

C++ 命名要求: BasicFormatter (自 C++20 起)

BasicFormatter 是一个抽象类型,用于对给定的格式参数类型和字符类型执行格式化操作。需要对 std::formatter 进行特化才能满足 BasicFormatter 的要求。

如果一个 BasicFormatter 能够格式化 const 和非 const 参数,则它是一个 Formatter

要求

如果一个类型满足 BasicFormatter,意味着它是半正则的,即它满足

并且,给定

  • Arg,一个格式参数类型
  • CharT,一个字符类型
  • BasicFormatter,类型为 ArgCharTBasicFormatter 类型
  • OutputIt,一个 LegacyOutputIterator 类型
  • f,类型为(可能是 const 的)BasicFormatter 的值
  • g,类型为 BasicFormatter 的值
  • arg,类型为 Arg 的左值
  • ParseContext,是 std::basic_format_parse_context<CharT> 的别名
  • FormatContext,是 std::basic_format_context<OutputIt, CharT> 的别名
  • parse_ctx,类型为 ParseContext 的左值
  • format_ctx,类型为 FormatContext 的左值
表达式返回类型语义
g.parse(parse_ctx)ParseContext::iterator* 解析类型 Arg 的格式说明符 [parse_ctx.begin(), parse_ctx.end()),直到遇到第一个不匹配的字符。
* 除非解析了整个范围或不匹配的字符是 },否则会抛出 [std::format_error]。[1]
* 将解析后的格式说明符存储在 g 中,并返回解析范围的结束迭代器。
f.format(arg, format_ctx)FormatContext::iterator* 根据 f 中存储的说明符格式化 arg,将输出写入 format_ctx.out(),并返回输出范围的结束迭代器。
* 输出应仅取决于
   * arg,
   * format_ctx.locale(),
   * 上一次调用
  f.parse(parse_ctx) 之后的范围 [parse_ctx.begin(), parse_ctx.end()),以及
   * 任何类型为 std::size_t 的值 nformat_ctx.arg(n)

1 ↑ 这允许格式化器发出有意义的错误消息。

C++ 命名要求: BasicFormatter (自 C++20 起)

BasicFormatter 是一个抽象类型,用于对给定的格式参数类型和字符类型执行格式化操作。需要对 std::formatter 进行特化才能满足 BasicFormatter 的要求。

如果一个 BasicFormatter 能够格式化 const 和非 const 参数,则它是一个 Formatter

要求

如果一个类型满足 BasicFormatter,意味着它是半正则的,即它满足

并且,给定

  • Arg,一个格式参数类型
  • CharT,一个字符类型
  • BasicFormatter,类型为 ArgCharTBasicFormatter 类型
  • OutputIt,一个 LegacyOutputIterator 类型
  • f,类型为(可能是 const 的)BasicFormatter 的值
  • g,类型为 BasicFormatter 的值
  • arg,类型为 Arg 的左值
  • ParseContext,是 std::basic_format_parse_context<CharT> 的别名
  • FormatContext,是 std::basic_format_context<OutputIt, CharT> 的别名
  • parse_ctx,类型为 ParseContext 的左值
  • format_ctx,类型为 FormatContext 的左值
表达式返回类型语义
g.parse(parse_ctx)ParseContext::iterator* 解析类型 Arg 的格式说明符 [parse_ctx.begin(), parse_ctx.end()),直到遇到第一个不匹配的字符。
* 除非解析了整个范围或不匹配的字符是 },否则会抛出 [std::format_error]。[1]
* 将解析后的格式说明符存储在 g 中,并返回解析范围的结束迭代器。
f.format(arg, format_ctx)FormatContext::iterator* 根据 f 中存储的说明符格式化 arg,将输出写入 format_ctx.out(),并返回输出范围的结束迭代器。
* 输出应仅取决于
   * arg,
   * format_ctx.locale(),
   * 上一次调用
  f.parse(parse_ctx) 之后的范围 [parse_ctx.begin(), parse_ctx.end()),以及
   * 任何类型为 std::size_t 的值 nformat_ctx.arg(n)

1 ↑ 这允许格式化器发出有意义的错误消息。