问题描述
我知道c ++ 20格式的提案是libfmt的 parts 的形式化规范,而libfmt是该形式化的兼容实现。但是,据我了解,libfmt提供了c ++ 20标准中指定的功能以外的其他功能。有哪些其他功能?
此外,主要的编译器供应商是否只是包含libfmt的子集或重新实现它?
解决方法
libfmt中有一堆不是C ++ 20格式的东西:
-
fmt::print()
直接打印到标准输出。这在P2093中提出。fmt::printf()
也存在,但在该论文中未提出。 -
fmt::memory_buffer
基本上是一个动态尺寸的容器,您可以通过fmt::format_to(buf,...)
将其格式化。 - 支持格式化ranges and tuples,包括
fmt::join()
。 - 支持
fmt::print("Elapsed time: {s:.2f} seconds","s"_a=1.23);
之类的named arguments - 通过
FMT_COMPILE
的编译时格式字符串