早在 2020年9 月份,C++标准委会历史上规模最大的一次会议(180人参会)在美国San Diego召开,这次的会议上讨论确定哪些特性要加入到C++20中,哪些特性可能加入到C++20中。C++20 国际标准草案获得一致通过,C++ 之父 Bjarne Stroustrup 就表示:“C++ 20是自C++11以来最大的发行版,它将是C++发展史上的里程碑。” 这一发言引起了开发者们对 C++20 的广泛关注。在明年二月份的会议当中将正式确定所有的C++20特性。
这次会议讨论的提案也是非常之多,达到了创纪录的274份,C++20的新特性如果要一一列出的话将是一份长长的清单,因此本文将只评论大部分确定要加入和可能加入到C++20的重要特性,让读者对C++的未来和演进趋势有一个基本的了解。
C++20中可能增加哪些重要特性,下面这个图可以提供一个参考。
ISO C++ 委员会正式发布了 C++20 标准,命名为 ISO/IEC 14882:2020。
C++20 引入了许多新特性,其中包括:
-
模块 (Modules)
-
协程 (Coroutines)
-
范围 (Ranges)
-
概念与约束 (Constraints and concepts)
-
指定初始化 (designated initializers)
-
操作符
<=> != ==
-
constexpr
支持:new
/delete
、dynamic_cast
、try
/catch
、虚拟 -
constexpr
向量和字符串 -
计时:日历、时区支持
-
std::format
-
std::span
-
std::jthread
像 Concepts/Ranges/Modules/Coroutines 这些新特性将会对开发者及 C++ 生态产生不小的影响,也为这门“高龄”编程语言增添不少魅力。