GCC11会将默认前端语言从C++14变更为C++17。
从GCC9开始,对C++17的支持已经不再是实验性质,C++前端实现了完整的C++17语言,并且C++标准库支持几乎也完成了(不过目前还有两个库特性有待完善)。
目前在GCC中,当不指定任何版本C++标准时,默认版本是C++14(从GCC6.1开始)。但是随着GCC对C++17的支持现在已经有一年以上的成熟期,并且GCC11将于明年发布,开发团队认为是时候将C++17用作GCC11的默认前端了。虽然可以在GCC10中进行此更改,但是它已经进入周期的后期阶段,没有太多时间来解决可能出现的任何后果;而虽然GCC已经在不断支持C++2a/C++20,但目前要进行默认的转换还为时过早。
26日,GCC11源码中已经将C++17更改为默认前端语言。C++17有许多新的特性,包括:删除trigraphs、在模板参数中允许使用typename(作为替代类)、来自braced-init-list的新规则用于自动推导、UTF-8字符文字与一些用于对齐内存分配的扩展等,迁移到C++17对于GCC与开发者来说有众多优势。