C++ Builder 12.0 是否支持 C++20 模块?

Does C++Builder 12.0 support C++20 modules?

提问人:saimmm0710 提问时间:11/10/2023 最后编辑:Remy Lebeausaimmm0710 更新时间:11/12/2023 访问量:131

问:

RAD Studio 12.0 已经发布,据说他们将 C++ Builder 升级到了 Clang 15,但我找不到 C++20 的模块功能,有什么解释吗?

++ 模块 20 C c++builder-12-athens

评论

1赞 NathanOliver 11/10/2023
查看网站,我只能看到版本 12 的 C++17 支持,并且模块是用 C++20 发布的

答:

3赞 Remy Lebeau 11/10/2023 #1

Clang 15 升级仅适用于 Windows 64 位预览编译器,不适用于 C++ Builder 的其余编译器,这些编译器仍基于 Clang 3.3 和 5.0。

根据 C++:Builder 12.0 的文档:

Clang 增强的 C++ 编译器

RAD Studio 提供以下 Clang 增强的 C++ 编译器:

编译器 平台 Clang 版本 LLVM 版本
密件抄送32C 32 位 Windows 5.0 5.0
密件抄送32X 32 位 Windows 5.0 5.0
密件抄送64 64 位 Windows 5.0 5.0
密件抄送64X 64 位 Windows 15.0 15.0
BCCIOSARM64 64 位 iOS 3.3 3.5
BCCAARM公司 人造人 3.3 3.3

也:

现代 C++ 语言功能合规性状态

注意:C++2c 应该是 C++26。

注意:BCC64X 目前是预览版。以下状态是有抱负的,但未经测试,不能保证最终支持。BCC64X 使用 C++17 作为其默认语言级别,初始版本不计划支持更高的语言级别。要编译为 C++2c,请使用 运行 bcc64x。-std=c++2c

注意:BCC64X 所基于的 Clang 版本及其使用的 C++ RTL 和 STL (libc+) 部分支持 C++23。我们希望 Clang 和 libc++ 在版本 15 及更早版本中支持的任何语言功能都能正常工作。但它不受支持,即使在预览所暗示的不受支持的级别也是如此。但是,BCC64X 编译器的预览版目前的目标是将 C++17 作为其语言标准。您可以使用更改目标语言合规性。-std=c++23

注意:BCC64X 所基于的 Clang 版本及其使用的 C++ RTL 和 STL (libc++) 部分支持 C++20。我们希望 Clang 和 libc++ 在版本 15 及更早版本中支持的任何语言功能都能正常工作。但它不受支持,即使在预览所暗示的不受支持的级别也是如此。但是,BCC64X 编译器的预览版目前的目标是将 C++17 作为其语言标准。您可以使用更改目标语言合规性。-std=c++20

文档中目前没有提到对 C++17 之后引入的特定功能的支持。

评论

2赞 Eljay 11/10/2023
Clang 本身有一个已实现、部分实现或尚未实现的功能列表: clang.llvm.org/cxx_status.html
2赞 Remy Lebeau 11/10/2023
这确实表明模块仅部分受支持,具体取决于您对哪些提案感兴趣。模块下列出了 12 个提案,其中只有 4 个得到了 Clang 15 的完全支持,其他提案要么部分实现,要么根本没有实现。