C++ 具名要求:格式化器 (Formatter)

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

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


 

格式化器 (Formatter) 是对给定的格式化参数类型及字符类型抽象格式化操作的类型。除非另外标注,标准库所提供给的 std::formatter 特化均被要求符合 格式化器 (Formatter) 的要求。

格式化器 (Formatter) 能格式化 const 与非 const 的实参,这通常以提供接收 const 引用的 format 成员函数达成。

要求

一个类型满足格式化器 (Formatter) ,若它满足基本格式化器 (BasicFormatter) ,并且给定

  • Arg,格式化参数类型
  • CharT,字符类型
  • Formatter,对于 ArgCharT格式化器 (Formatter) 类型
  • OutputIt老式输出迭代器 (LegacyOutputIterator) 类型
  • f,(可能为 const 的) Formatter 类型值
  • gFormatter 类型值
  • argArg 类型的左值
  • t,可转换到(可能为 const 的) Arg 的类型的值
  • ParseContextstd::basic_format_parse_context<CharT> 别名
  • FormatContextstd::basic_format_context<OutputIt, CharT> 的别名
  • parse_ctxParseContext 类型左值
  • format_ctxFormatContext 类型左值
表达式 返回类型 语义
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()),以及
    • 对于任何 std::size_t 类型值 nformat_ctx.arg(n)
f.format(arg, format_ctx) FormatContext::iterator

同上,但不修改 arg