C++23 都出来了:你跟上了吗?

1,337 阅读2分钟

ISO C++ 标准委员会召集人兼主席、微软软件架构师 Herb Sutter 表示,即将推出的 C++23(C++20 的后续版本)的技术工作已经完成。重点是 Sutter 所说的“适配和完成”问题,并且没有从 C++23 中添加或删除任何功能。该标准仍有待批准投票,但定于今年晚些时候发布。

由于 C++20 在全球开始疫情之前就完成了,所以 在 2020 年 2 月,Sutter 将 C++23 称为“疫情版”。Sutter 提到的主要新功能包括:

模块“std”:通过添加两个模块 std 和 std.compat,使标准库能够作为模块而不是头文件导入 “if consteval”:如果上下文是常量评估的,则执行语句 显式“this”参数:非静态成员函数的第一个参数可以是由“this”表示的显式对象参数 使用多个参数重载下标运算符:使处理多维数组更容易 延长 for-range-initializer 中临时对象的生命周期,直到循环结束 可以在下面的链接页面里找到更多新功能和完整列表,以及指向描述它们的论文的链接。

en.cppreference.com/w/cpp/compi…

一般来说,C++23 是关于小的改进而不是重大的变化。Sutter 将其描述为“C++20 的完善”。

在最近的委员会会议上也进行了有关 C++26 提案的工作,包括契约和并行性方面的工作。

这些功能什么时候可用?C++ 的标准更新周期为三年,但功能的实际可用性取决于编译器开发人员,许多新功能在完全标准化之前就会出现。如上表所示,C++23 中的大部分新特性已经在 GCC 和 Clang 中被实现。微软的 Visual C++ 编译器相对落后了。

例如, C++ 仍然是最流行的编程语言之一,在 Redmonk 调查中排名第 7 。也就是说,人们对 Rust 和 Go 等更安全的替代方案有着浓厚的兴趣。此外,Google 赞助的 Carbon 项目目的是提供 C++ 的实验性替代方案,因为 C++ 具有太多遗留问题并且发展太慢。也就是说,C++23 中的“小小改进”将受到开发人员的欢迎。