LLVM 16 默认标准从 C++14 转为 C++17


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 或更早版本,以保持与默认值的兼容性。


相關推薦

2023-03-20

的 LLD 链接、Zstd 压缩的调试部分、稳定其 LoongArch 支持、默认为 Clang 的 C++17 等等。 下面是 LLVM 16 的主要变化: Clang 的默认 C++ 标准现在是 GNU++17,而不是 GNU++14/C++14  实现更多 C++20 功能,以及对现有 C++20 功能的错误修

2022-11-19

个新的修订版删除了一些向后兼容的特性,然而 GCC 仍然默认接受这些过时的结构。对这些结构的支持让程序员感到困惑,并有可能影响 GCC 实现未来 C 语言标准中的功能。预计未来的 GCC 版本(可能是 GCC 14)将默认不支持这些

2023-04-16

本中一个重大且必要的更改是 PCRE2 成为 Regex ( #12978 ) 的默认引擎。 1.7 中添加了对 PCRE2 的支持,并在 1.7.3 中稳定下来。我们认为默认使用它是安全的。仍然可以回退到 PCRE,如果 PCRE2 在编译时不可用则自动回退,或者通过编译

2022-08-11

达断点、错误或警告的行上时,Visual Studio 将播放声音。 默认情况下,Visual Studio 使用与Visual Studio Code相同的声音,但这些声音可以配置为用户的首选项。 若要 启用 音频提示,请转到“工具选项”,并在“环境”下查找“预

2023-09-01

数 配置服务自动回复ping消息 注意⚠️ quickws默认返回read buffer的浅引用,如果生命周期超过OnMessage的,需要clone一份再使用 Installation go get github.com/antlabs/quickws example 服务端 package main import ( "fmt" "net/http" "time" "g

2023-06-07

这样的工具持续炙手可热,其势必会吸引一些新入局者,从而为 Python 提供保障。如果不是的话,Python 第一的位置则岌岌可危。 除了这场第一名的争夺战之外,本月还有两种有趣的新语言首次进入前 50 名: X++(微软Dynamics 使

2022-12-07

的语言排行则反复波动。少儿编程语言 Scratch 短暂的从第 23 名上升至榜单第 17 后,又在本月跌出 Top 20 到了第 21 位。与此同时,Perl 又重回 Top 20 榜单,从上月的第 23 位攀升至现在的第 18 位;Go 和 R 语言也互换

2022-04-12

libgcc 标准库,并准备在 GCC 14 以稳定形式发布后将其作为默认编译器。 openSUSE Tumbleweed 采用的是滚动发布的更新方式,软件更新会持续不断地推出,软件套件在某一时刻的版本会被存储为「快照」,而 openSUSE Leap 这样的传统发

2022-09-03

技媒体 Phoronix 对运行在 Linux 上的 Apple M2 芯片 的 GCC 和 LLVM Clang 编译器进行了性能测试和对比。 此次测试采用的设备是 Apple M2 MacBook Air ,运行基于 Arch 的 Asahi Linux 系统(这是目前唯一能够运行最新 Apple  M2 芯片的发行版)

2023-04-08

一种非常实用的语言,可以与 C/C++ 程序顺利交互,因此从 C/C++ 到 Zig 的迁移非常容易。Zig 具有 C 和 C++ 的所有优良特性(例如使用选项类型增强的显式内存管理),并且淘汰了一些不太好的特性(如可怕的预处理)。“进入前 5

2022-10-11

es,以查找其中的 cmake 文件 将 gnu17 设置为 clang 16 cppstd 默认值 在 MesonToolchain 中实施正确的 libcxx支持 更多详情可查看:https://docs.conan.io/en/latest/changelog.html

2023-04-07

compiler-rt] [scudo] 在 x86 可用时使用 -mcrc32 6个 [AARCH64] ssbs 默认为 cortex-x1、cortex-x1c、cortex-a77 启用 [libc++] 在细节 header 中定义 namespace views [X86] lowerV8I16Shuffle - 使用明确的 SmallVector<SDValue, 4> 宽度来避免 MSVC AVX 对齐错误 [cla

2022-07-28

linic-jpa' in 3m 0s. 改进 GraalJS 中的互操作性 从 22.2 开始,默认情况下为其他语言的对象分配适当的 JavaScript 原型。该功能处于实验性阶段,通过让外部对象作为 JavaScript 中的数组、函数和其他类型出现,增加了代码的可移植性。

2022-08-13

32 和 AArch64 目标上的字节数检查的可移植性 修正了 MSVC 14.0(Visual Studio 2015)在 C++17 模式下的编译 文件系统。 在 Windows 上,增加了一个回退实现,用于在文件因 ERROR_ACCESS_DENIED 错误而无法打开的情况下查询文件属性。