Skip to content

C++23

C++23(ISO/IEC 14882:2024)延续了 C++20 的方向,在四大基石之上进一步完善和扩展。

核心特性

特性说明
std::expected<T,E>带错误类型的返回值,替代异常
std::print / std::println替代 iostream 的现代打印方式
std::mdspan多维数组视图
std::generator协程生成器的标准实现
deducing this显式对象参数,消除 CRTP 和重复代码
if consteval编译期与运行期的条件分支
多维下标运算符matrix[i, j] 语法
std::flat_map / flat_set基于排序 vector 的容器
import std导入整个标准库
std::ranges::to从 range 构造容器
std::views::zip / zip_transform多 range 并行遍历
std::to_underlyingenum class 转底层类型

亮点解读

deducing this

cpp
struct Widget {
    // C++20 需要写两份(const 和非 const)
    // C++23 一份搞定
    template<typename Self>
    auto&& name(this Self&& self) { return std::forward<Self>(self).name_; }
};

std::print

cpp
// 不再需要 <iostream>,比 printf 类型安全
std::print("Hello, {}! pi = {:.2f}\n", "world", 3.14159);

import std

cpp
// 一行搞定,替代所有 #include
import std;

编译器支持

编译器支持状态
GCC14+(部分特性)
Clang18+(部分特性)
MSVCVS 2022 17.8+(部分特性)

延伸阅读

基于 MIT 许可发布