C++23 的编译器支持 - cppreference.com

C++23 的编译器支持

来自cppreference.com


* - 在版本号上停留可以查看注记 * 查看其他注记
DRnn - 在 "DR" 后的数字 nn 表示应用该缺陷报告的目标 C++ 修订版本,例如 DR20 → C++20。

C++23 核心语言功能特性

C++23 功能特性

 
提案

 
GCC
Clang
MSVC
Apple Clang
EDG eccp
Intel C++
Nvidia HPC C++ (ex PGI)*
Nvidia nvcc
Cray
(有符号)size_t字面量后缀  (FTM)* P0330R8 11 13 19.43* 13.1.6* 6.5 2022.2 23.9
使更多 lambda() 可以被省略 P1102R2 11 13 19.44* 13.1.6* 6.3 2022.2 22.5
if consteval  (FTM)* P1938R3 12 14 19.44* 14.0.0* 6.3 2022.2 24.1
移除垃圾收集支持 P2186R2 12 不适用 19.30* 不适用 不适用
允许在 static_assertconstexpr if 中进行窄化的上下文转换 P1401R5 9 13 (部分)*
14
19.44* 14.0.0* 2022.2 20.7
行拼接之前剔除空白 P2223R2 19.50* 6.7 2022.2
使类布局更遵守声明顺序 P1847R4 19.30* 2022.2
移除混合宽度字符串字面量拼接 P2201R1 19.44*
显式对象成员函数(推导 this)  (FTM)* P0847R7 14 18
19*
19.32* (部分)*
19.43*
6.3 22.5
auto(x)auto{x}  (FTM)* P0849R8 12 15 19.50* 14.0.3* 6.4 2022.2 23.3
#elifdef#elifndef P2334R1 12 13 19.40* 13.1.6* 6.5 2022.2 23.9
constexpr 函数中的非字面类型变量(以及句标与 goto)  (FTM)* P2242R3 12 15 19.43* 14.0.3* 6.3 2022.2 22.5
一致的字符字面量编码 P2316R2 19.30* 2022.2
字符集与编码 P2314R4 10 19.51* 2022.2
扩展(for 循环 的)初始化语句以允许别名声明 P2360R0 12 14 19.50* 14.0.0* 2022.2
多维数组下标运算符  (FTM)* P2128R6 12 15 19.42* 14.0.3* 2022.2
lambda 上的属性 P2173R1 9 13 19.44* 13.1.6* 6.6 2022.2 22.5
#warning P2437R1 是* 19.50* 15.0.0* 6.5 2023.2
移除不可编码的宽字符字面量和多字符宽字符字面量 P2362R3 13 14 19.51* 15.0.0* 6.7 2023.2
复合语句末尾的标签 P2324R2 13 16 19.51* 16.0.0* 6.5 2023.2 23.9
划线的转义序列 P2290R3 13 15 19.50* 15.0.0* 6.7 2023.2
命名的通用转义字符  (FTM)* P2071R2 13 15 19.51* 15.0.0* 6.7 2023.2
放松 constexpr 的限制  (FTM)* P2448R2 13 17 (部分)
19
19.51* 2024.0 (部分)
简化的隐式移动  (FTM)* P2266R3 13 13 19.50* 6.7 2022.2
static operator()  (FTM)* P1169R4 13 16 19.44* 16.0.0* 6.7 2023.2
可选的扩展浮点数类型要求 P1467R9 13 不适用 6.4
从继承的构造函数中推导出类模板参数 P2582R1 14 19.51*
[[assume]] 属性 P1774R8 13 19 19.51*
支持 UTF-8 作为一种可移植的源文件编码 P2295R6 13* 15* 19.0 (Update 2)** 15.0.0* 2023.2
static operator[]  (FTM)* P2589R1 13 16 19.44* 16.0.0* 6.7 2023.2
允许 constexpr 函数中的 static constexpr 变量  (FTM)* P2647R1 13 16 19.51* 16.0.0* 2023.2
延长范围 for 循环初始化器中临时变量的生命  (FTM)* P2644R1
P2718R0
CWG2659
15 19 19.51*
DR11:更改 lambda 尾随返回类型的作用域 P2036R3
P2579R0
17 19.50* 2023.2
DR20:有意义的导出 P2615R1 15 17 (部分) 19.28 (16.8)*
DR20:consteval 需要向上传播  (FTM)* P2564R3 14 17 16.0.0* 6.7 2024.0
DR98:C++ 标识符语法使用 Unicode 标准附录 31 P1949R7 12 14 19.50* 14.0.0* 6.4 2022.2
DR11:允许重复属性 P2156R1 11 13 19.50* 13.1.6* 6.5 23.9
DR20:调整功能特性测试宏 __cpp_concepts 的值 P2493R0 12 19.50* 6.4 23.3
DR98:放宽 wchar_t 的要求以符合现有实践 P2460R2 19.44* 15.0.0* 不适用 2023.2
DR11:在常量表达式中使用未知的指针和引用 P2280R4 14 20* 19.50*
DR20:放宽相等性运算的重写规则 P2468R2 13 16 19.36* 16.0.0* 2023.2
DR20:char8_t 兼容性和可移植性修复  (FTM)* P2513R4 13 16 19.34* 16.0.0* 2023.2
DR98/11:澄清诊断指令报告的内容并允许 static_assert 模板上下文中使用非值依赖性表达式 CWG2518 13 17 16.0* (部分)*
19.40*
 

C++23 功能特性
 

提案
GCC
Clang
MSVC
Apple Clang
EDG eccp
Intel C++
Nvidia HPC C++ (ex PGI)*
Nvidia nvcc
Cray

C++23 库功能特性