可以在C++ 20中使用std ::格式

发布于 2025-01-19 15:40:08 字数 293 浏览 0 评论 0原文

我一直在尝试使用C ++ 20中包含的std ::格式功能。据我所知,Clang 14应该支持此功能,但是由于某些原因,我会收到以下错误:在命名空间'std'中没有名为“格式”的成员。根据 cppreference的编译器支持图表,文本格式应由Clang支持,但我是我仍会收到此错误。我对问题的含义不知所措。

I've been trying to use the std::format function included in C++20. As far as I can tell, clang 14 is supposed to support this feature, but for some reason I am receiving the following error: no member named 'format' in namespace 'std'. According to cppreference's compiler support chart, text formatting should be supported by clang, but I'm still receiving this error. I'm at a loss for what the issue is.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

孤单情人 2025-01-26 15:40:08

std::format 在 libc++ 14 中不完整,因此默认禁用您需要传递LIBCXX_ENABLE_INCOMPLETE_FEATURES 构建 llvm 时的参数 以启用该功能。

std::format 现已在 libc++17 中完全可用。

如果您无法使用最新版本的 libc++ 可以使用 https://github.com/fmtlib/fmt。

std::format is not complete in libc++ 14 so is disabled by default. You need to pass the LIBCXX_ENABLE_INCOMPLETE_FEATURES parameter when building llvm to enable the feature.

std::format is now fully available in libc++17.

If you can't use the latest verson of libc++ can use https://github.com/fmtlib/fmt.

ゝ偶尔ゞ 2025-01-26 15:40:08

<块引用>

据此,clang应该支持文本格式

如果你仔细观察,该单元格中有一个星号:

14*

下面,它说:

* - 将鼠标悬停在版本号上即可查看注释

,当您将鼠标悬停在版本号上时,它会显示:

该论文已实现,但仍然标记为不完整的功能。尚未实现的 LWG 问题将导致 API 和 ABI 损坏。

未提及的是,默认情况下不启用不完整的功能。但这是有道理的,因为他们不希望用户依赖会破坏的 API/ABI。在我看来,正如这个问题所证明的那样,使用绿色表示该单元格是具有误导性的。

总之,最好使用第三方格式化库,直到文本格式化的标准实现在主要语言实现中完整、稳定且非实验性为止。


其他注意事项:

  • 您必须包含定义 std::format 的标头。
  • Clang 默认情况下不使用 C++20,因此您必须显式指定它。
  • Clang 默认在 Linux 上使用 libstdc++ 标准库(为了与共享库兼容),因此在这种情况下,默认情况下您不会使用 Clang 的标准库,并且 libstdc++ 尚未实现文本格式化。

According to this, text formatting should be supported by clang

If you look closely, there is an asterisk in that cell:

14*

Below, it says:

* - hover over the version number to see notes

And when you hover, it says:

The paper is implemented but still marked as an incomplete feature. Not yet implemented LWG-issues will cause API and ABI breakage.

What's unsaid is that incomplete features are not enabled by default. But that makes sense since they wouldn't want users to depend on an API/ABI that will break. In my opinion, as also evidenced by this question, using green for this cell is misleading.

In conclusion, it's best to use the third party formatting library until the standard implementation of text formatting is complete, stable and non-experimental in major language implementations.


Other caveats:

  • You must include the header that defines std::format.
  • Clang doesn't use C++20 by default, so you must specify it explicitly.
  • Clang uses libstdc++ standard library on Linux by default (for compatibility with shared libraries), so in such case you won't be using the Clang's standard library by default, and libstdc++ hasn't implemented text formatting yet.
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文