C++20 的编译器支持
来自cppreference.com
< cpp | compiler support
* - 在版本号上停留可以查看注记 * 查看其他注记
DRnn - 在 "DR" 后的数字 nn 表示应用该缺陷报告的目标 C++ 修订版本,例如 DR20 → C++20。
C++20 核心语言功能特性
| C++20 功能特性 |
提案 |
GCC |
Clang |
MSVC |
Apple Clang |
EDG eccp |
Intel C++ |
Nvidia HPC C++ (ex PGI)* |
Nvidia nvcc |
Cray |
|
|---|---|---|---|---|---|---|---|---|---|---|---|
允许 lambda 捕获 [=, this]
|
P0409R2 | 8 | 6 | 19.22* | 10.0.0* | 5.1 | 2021.1 | 20.7 | 12.0 | 11.0 | |
__VA_OPT__
|
P0306R4 P1042R1 |
8 (部分)* 10 (部分)* 12 |
9 | 19.25* | 11.0.3* | 5.1 | 2021.1 | 20.7 | 12.0 | 11.0 | |
| 指派初始化器 (FTM)* | P0329R4 | 4.7 (部分)* 8 |
3.0 (部分)* 10 |
19.21* | (部分)* | 5.1 | 2021.1 | 20.7 | 12.0 | 11.0 | |
| 泛型 lambda 的模板形参列表 (FTM)* | P0428R2 | 8 | 9 | 19.22* | 11.0.0* | 5.1 | 2021.1 | 20.7 | 12.0 | 11.0 | |
| 位域的默认成员初始化器 | P0683R1 | 8 | 6 | 19.25* | 10.0.0* | 5.1 | 2021.1 | 20.7 | 12.0 | 11.0 | |
| 类模板实参推导中的 intializer_list 构造函数 | P0702R1 | 8 | 6 | 19.14* | 是 | 5.0 | 2021.1 | 20.7 | 12.0 | 11.0 | |
const& 限定的成员指针
|
P0704R1 | 8 | 6 | 19.0 (2015)* | 10.0.0* | 5.1 | 2021.1 | 20.7 | 12.0 | 11.0 | |
| 概念 (FTM)* | P0734R0 | 5* 10 |
10 | 19.23* (部分)* 19.30* |
12.0.0* (部分) | 6.1 | 2023.1* | 20.11 | 12.0 | 11.0 | |
| 不求值语境中的 lambda | P0315R4 | 9 | 13 (部分)* 14 (部分)* 17 |
19.28 (16.8)* | 13.1.6* (部分) | 6.2 | 2023.1 (部分) 2024.0 |
20.7 | 12.0 | ||
| 三路比较运算符 (FTM)* | P0515R3 | 10 | 8 (部分) 10 |
19.20* | 12.0.0* | 5.1 | 2021.1 | 20.7 | 12.0 | 11.0 | |
| DR11:简化隐式 lambda 捕获 | P0588R1 | 8 | 19.24* | 5.1 | 2021.1 | 20.7 | 12.0 | ||||
| 基于范围的 for 的初始化语句 | P0614R1 | 9 | 8 | 19.25* | 11.0.0* | 6.0 | 2021.7 | 20.11 | 12.0 | 11.0 | |
| 可默认构造与可赋值的无状态 lambda |