何谓 C++20
2020 年 2 月,国际标准化组织(ISO)正式通过了 C++ 的新版本——C++20。C++20 是自 C++11 以来对语言改动最大的一次更新。
C++20 的新增改进
为方便查阅,下面列出 C++20 引入的主要变更。此列表并非穷尽,仅用于凸显关键亮点:
- 通过
auto
形参实现的简写函数模板(参见 课程11.8《带多种模板类型的函数模板》) - Chrono 扩展:日历与时区支持(暂无教程)
- Concepts(概念),用于对模板形参施加约束(暂无教程)
constexpr dynamic_cast
与typeid
(暂无教程)constexpr
虚函数(暂无教程)constexpr try-catch
(暂无教程)constinit
关键字,用于断言变量为静态初始化(暂无教程)- 协程(Coroutines)(暂无教程)
- 指定初始化器(参见《结构体聚合初始化》章节)
- 使用
consteval
关键字的立即函数(参见《constexpr 函数》章节) - 模块(Modules),作为
#include
的替代方案(暂无教程) - 范围(Ranges)(暂无教程)
std::erase
(暂无教程)- 用于数组的
std::make_shared
(暂无教程) std::map::contains()
(暂无教程)std::span
(暂无教程)- 字符串格式化库(暂无教程,参考 Formatting library (since C++20))
- 字符串字面量作为模板实参(暂无教程)
- 使用三路比较运算符
<=>
(spaceship operator)的三路比较(暂无教程) - 使用作用域枚举(参见《作用域枚举(enum class)》章节)
- 视图(Views)(暂无教程)