C++ 具名要求:基本格式化器 (BasicFormatter) (C++20 起)

来自cppreference.com
< cpp‎ | named req
 
 
C++ 具名要求
基础
类型属性
库所属
容器
容器元素
(C++11)

迭代器
流 I/O
格式化
BasicFormatter
(C++20)
(C++20)
随机数
(C++11)    
并发
(C++11)
(C++11)
范围
其他
(C++11)


 

基本格式化器 (BasicFormatter) 是对给定的格式化参数类型及字符类型抽象格式化操作的类型。要求 std::formatter 的特化符合基本格式化器 (BasicFormatter) 的要求。

基本格式化器 (BasicFormatter) 若能格式化 const 与非 const 的实参,则它为格式化器 (Formatter)

要求

一个类型满足 基本格式化器 (BasicFormatter) ,若它为半正则,这表示它满足:

并且,给定:

  • Arg,格式化参数类型
  • CharT,字符类型
  • BasicFormatter,对于类型 ArgCharT基本格式化器 (BasicFormatter) 类型值
  • OutputIt老式输出迭代器 (LegacyOutputIterator) 类型
  • f,(可能为 const 的) BasicFormatter 类型值
  • gBasicFormatter 类型值
  • argArg 类型左值
  • ParseContextstd::basic_format_parse_context<CharT> 的别名
  • FormatContextstd::basic_format_context<OutputIt, CharT> 的别名
  • parse_ctxParseContext 类型的左值
  • format_ctxFormatContext 类型的左值
表达式 返回类型 语义
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. 这允许格式化器抛出有意义的错误消息。