何谓 C++23
2023 年 2 月,国际标准化组织(ISO)正式通过了 C++ 的新版本——C++23。
C++23 的新增改进
为方便查阅,下面列出 C++23 引入的主要变更。此列表并非穷尽,仅用于凸显关键亮点:
- constexpr
<cmath>(例如std::abs())与<cstdlib>(参见《关系运算符与浮点比较》章节)。 - constexpr
std::unique_ptr(暂无章节)。 - 显式对象形参(explicit this parameter)(暂无课程)。
- 通过
<stdfloat>提供的定长浮点类型(暂无课程)。 - 格式化输出函数
std::print与std::println(暂无课程)。 std::size_t及其对应有符号类型的字面量后缀(参见《字面量》章节)。- 多维下标运算符
operator[](《多维 std::array》章节章节中提及)。 - 多维视图
std::mdspan(《多维 std::array》)。 - 预处理器指令
#elifdef与#elifndef(暂无课程)。 - 预处理器指令
#warning(暂无课程)。 - 堆栈回溯库(Stacktrace library)(暂无课程)。
- 标准库模块
std与std.compat(暂无课程)。 - 静态
operator()与operator[](暂无课程)。 std::bitset现已完全 constexpr。std::expected(暂无课程)。std::ranges算法starts_with、ends_with、contains(暂无课程)。std::string::contains与std::string_view::contains(暂无课程)。std::to_underlying,用于获取枚举的底层类型(参见《作用域枚举(enum class)》章节)。std::unreachable()(暂无课程)。- 在常量表达式中使用未知指针与引用(参见 课程17.2《std::array 长度与索引》)。
