GCC 是否支持 C++20 std::format?

Por*_*ies 17 c++ gcc stl c++20

如果没有,你知道什么编译器或版本会吗?

请参阅cppreference/format

Tan*_*yal 92

现在已经是 2023 年了!干杯!

GCC 13CLANG 14MSVC 16.10/VS 2019都在各自的标准库中提供了基于{fmt}的功能。std::format

希望我们std::print很快就能推出 C++23。


请参阅此处的编译器支持:-

  • 我喜欢这种保持最新状态的方式。 (11认同)
  • 请记住,{fmt} 比 C++20 <format> 具有更多功能。因此,如果您打算使用它,然后将 fmt::format 一对一切换为 std::format,您需要仔细选择要使用的功能。 (7认同)
  • gcc trunk 最近实现了文本格式化 (2认同)

Iho*_*kov 22

截至今天(2023 年 12 月 12 日),GCC 13.1确实支持此功能。或者更确切地说,它的标准库实现确实支持它(因为它是一个库功能,而不是编译器功能)(链接

另外,您现在可以尝试Clang 17.0.0及更高版本。另外,但请注意以下几点:

Clang 14.0.0libc++中添加了支持,但是:“该论文已实现,但仍标记为不完整的功能。尚未实现的 LWG 问题将导致 API 和 ABI 损坏”链接 std::format

Clang 15.0.0及更高版本的libc++中,可以通过编译器标志启用此功能(链接-fexperimental-library

另外,您可以尝试MSVC 16.10及更高版本。提到的支持std::format是完整的。


标准库当前状态可以在这里查看:


小智 20

gcc 支持 std::format吗?

还没有!

我是那个希望使用的人std::format,但还没有编译器支持,甚至是gcc 10。请参阅Text formating库功能。

编译器对 C++20 库功能的支持

  • 它可用于 Visual Studio 2019 (16.10)。 (2认同)

PFe*_*Fee 7

GCC 13 添加了对 std::format 的支持。根据cppreference,从 GCC 13 开始,其 C++20 支持(核心语言和标准库)不存在任何差距。

bugzilla 票证指出,std::format 的某些 C++23 扩展尚未实现。

GCC 13 预计将于 2023 年 4 月左右发布。

编译器资源管理器上的 GCC 主干安装包括 std::format 支持。

OpenSUSE Tumbleweed(截至 2023 年 3 月 19 日)和即将推出的 Fedora 38 包含 GCC 13。