Voting Statistics

Whether original:0 %

0 % Complete (success)

Whether Valuable:0 %

0% Complete

Whether Diathesis:0 %

0% Complete (warning)

Whether Legitimate:0 %

0% Complete

2017 年 12 月,一则提议将 LLVM/Clang 的 C++ 默认方言(default dialect)从 GNU++98 切换到 GNU++14 ,一直持续到前几天的 LLVM/Clang 15 版本。而 GCC 在 GCC 11 版本就已将默认标准设为 GNU++ 17 。

 GNU++ 即带有 GNU 扩展的 C++ 语言,GNU 扩展特性可参考 GNU extensions to the C and C++ languages

在 LLVM 15.0 发布后,LLVM/Clang 16.0 版本即将迎来一个重大变化: GNU++17 将成为 LLVM 默认的 C++ 和 ObjectiveC++ 版本。

Clang 的 C++17 支持非常稳定了,只有一些微小的细节需要修复。事实上,Apple 的 DriverKit 已经在上游 LLVM 中进行了更改(D121911 [Clang] 添加 DriverKit 支持 ),默认使用 GNU++17 而不是 GNU++14。

目前相关的补丁已经发布,没有突发状况,默认标准转为 GNU++ 17 应该是板上钉钉的事情。

切换默认版本之后,对于当前与 C++17 不兼容且依赖默认值的 C++ 代码库,则需要设置 -std=gnu ++14 或更早版本,以保持与默认值的兼容性。