9

我知道 c++20 格式提案是libfmt部分的形式化,而 libfmt 是该形式化的兼容实现。但是,据我了解,libfmt 提供了超出 c++20 标准中指定的附加功能。有哪些附加功能?

另外,主要的编译器供应商是简单地包含 libfmt 的一个子集还是重新实现它?

4

1 回答 1

13

libfmt 中有很多东西不是 C++20 格式的:

  • fmt::print()直接打印到标准输出。这是在P2093中提出的。fmt::printf()也存在,但未在该论文中提出。
  • fmt::memory_buffer基本上是一个动态大小的容器,您可以将其格式化为 via fmt::format_to(buf, ...)
  • 支持格式化范围和元组,包括fmt::join().
  • 支持命名参数,如fmt::print("Elapsed time: {s:.2f} seconds", "s"_a=1.23);
  • 编译时格式字符串通过FMT_COMPILE
于 2020-08-25T21:15:27.297 回答