【问题标题】:Does GCC support C++20 std::format?GCC 是否支持 C++20 std::format?
【发布时间】:2020-12-22 17:11:49
【问题描述】:

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

cppreference/format

【问题讨论】:

  • @Bathsheba ?!在将 fmtlib 采用到 C++20 之前,C++ 没有任何足够的方式来格式化输出。 fmtlib 具有唯一可用的 API,并且是最快的格式化程序。 fmtlib 不是“另一种格式化输出的方式”,它是唯一在 C++ 中通常可用的格式化输出的方式。
  • 特别是,该页面上有一个指向图书馆状态的链接,其中包含格式不佳的表格,如果您在该页面上搜索“文本格式”,则有三行与之相关,其中一列为空状态”。
  • @Bathsheba 您似乎(错误地)假设格式和十进制数字之间存在一些决定。或者甚至有一个人选择了一个而不是另一个。它(通常)不会那样工作。
  • 我真的很想知道是什么让他们这么长时间。本质上,该库很久以前就作为一个单独的项目编写了。

标签: c++ gcc stl c++20


【解决方案1】:

gcc 是否支持std::format

还没有!

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

Compiler support for C++20 library features

【讨论】:

  • 它在 Visual Studio 2019 (16.10) 中可用。
  • @PFee 正确,但 GCC 尚不支持。我希望新版本的 GCC 11 或 12 支持它。
  • 它不在 GCC 11 中(已经是 openSUSE Tumbleweed 的默认编译器),如果能获得有关 GCC/libstdc++ 的任何进展的更新,那就太好了。
  • 在 gcc 11.2.1 中仍然不可用。
【解决方案2】:

截至 2022 年 3 月,,GCC 尚不支持 std::format

MSVC(19.29 及更高版本)是唯一完全支持 std::format 的编译器。 Clang 14(带有 libc++14)也几乎完全支持 std::format

由于 std::format 基于 fmt 库,您可以使用 fmt::format 直到 std::format 到达 GCC。

See Compiler support here

{fmt} library GitHub repo

【讨论】:

  • 请记住,尽管 {fmt} 比 C++20 具有更多功能。因此,如果您打算使用它,然后将 fmt::format 一对一切换为 std::format,则需要仔细选择您使用的功能。
  • 我喜欢它保持最新的方式。
【解决方案3】:

截至今天(2021 年 10 月 12 日),GCC 11.2Clang 13.0.0 都不支持此功能。或者更确切地说,他们的标准库实现不支持它,因为它是一个库功能。

他们的标准库当前状态可以在这里看到:

附: (2022 年 1 月 25 日)

  • Clang 14.0.0 的 libc++ 支持 std::format,但:“论文已实现,但仍标记为不完整的功能。尚未实现的 LWG 问题将导致 API 和 ABI 损坏”强> as mentioned here

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-20
    • 2021-05-24
    • 2020-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多