C++20

ZaynPei Lv6

concepts 概念

概念 (Concept) 是一种编译期谓词(predicate),它是一种直接在语言层面用来约束(constrain)模板参数的特性。

简单来说,它允许你清晰地声明:“这个模板参数 T 必须满足某些要求”(例如,T 必须是一个整数,或者 T 必须有一个 .begin() 成员函数)。

具体见(CPP++.md)

jthread

C++20 引入了 std::jthread,它是对 std::thread 的增强版本,位于 <thread> 头文件中。jthread 的“j”代表“joining”,意味着它在析构时会自动调用 join(),从而简化了线程的管理。

1
2
3
4
5
6
7
8
9
10
#include <thread>
#include <iostream>
void threadFunction() {
std::cout << "Hello from jthread!" << std::endl;
}
int main() {
std::jthread jt(threadFunction); // 创建并启动线程
// 不需要显式调用 join(),析构时会自动调用
return 0;
}

协程

C++20 的协程 (Coroutines) 在语言层面引入了一种全新的函数控制流,允许函数在执行中途挂起 (yield),并在稍后的某个时间点从挂起处恢复 (resume),而不会阻塞调用它的线程。

ranges

C++20 引入了 Ranges 库,位于 <ranges> 头文件中。它为处理序列数据提供了一种更直观和强大的方式,允许你以声明式的风格来操作数据集合。