C++2b 功能特性
请注意,随 C++2b 标准草案的逐步推进,此列表可能会发生变化。
C++23 核心语言功能特性
C++23 功能特性 | 提案 | GCC | Clang | MSVC | Apple Clang | EDG eccp | Intel C++ | IBM XLC++ | Sun/Oracle C++ | Embarcadero C++ Builder | Cray | Portland Group (PGI) | Nvidia nvcc |
[ 折叠 ] |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
(有符号)
的 字面量后缀 |
P0330R8 |
|||||||||||||
C++23 功能特性 | 提案 | GCC | Clang | MSVC | Apple Clang | EDG eccp | Intel C++ | IBM XLC++ | Sun/Oracle C++ | Embarcadero C++ Builder | Cray | Portland Group (PGI) | Nvidia nvcc |
C++23 库功能特性
C++23 功能特性 | 提案 | GCC libstdc++ | Clang libc++ | Apple Clang | MSVC 标准库 | Sun/Oracle C++ 标准库 | Embarcadero C++ Builder 标准库 | Cray C++ 标准库 |
[ 折叠 ] |
---|---|---|---|---|---|---|---|---|---|
栈追踪库 |
P0881R7 |
||||||||
“ |
P0943R6 |
||||||||
|
P1048R1 |
||||||||
/
的
|
P1679R3 |
||||||||
C++23 功能特性 | 提案 | GCC libstdc++ | Clang libc++ | Apple Clang | MSVC 标准库 | Sun/Oracle C++ 标准库 | Embarcadero C++ Builder 标准库 | Cray C++ 标准库 |
C++20 功能特性
C++20 核心语言功能特性
C++20 功能特性 | 提案 | GCC | Clang | MSVC | Apple Clang | EDG eccp | Intel C++ | IBM XLC++ | Sun/Oracle C++ | Embarcadero C++ Builder | Cray | Portland Group (PGI) | Nvidia nvcc |
[ 折叠 ] |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
允许 lambda 捕获
|
P0409R2 |
8 | 6 | 19.22* | 10.0.0* | 5.1 | ||||||||
|
P0306R4 P1042R1 |
8 (部分)* 10 | 9 | 19.25* | 11.0.3* | 5.1 | ||||||||
指派初始化器 |
P0329R4 |
4.7 (部分)* 8 | 3.0 (部分)* 10 | 19.21* | (部分)* | 5.1 | ||||||||
泛型 lambda 的模板形参列表 |
P0428R2 |
8 | 9 | 19.22* | 11.0.0* | 5.1 | ||||||||
位域的默认成员初始化器 |
P0683R1 |
8 | 6 | 19.25* | 10.0.0* | 5.1 | ||||||||
类模板实参推导中的 intializer_list 构造函数 |
P0702R1 |
8 | 6 | 19.14* | 是 | 5.0 | ||||||||
const& 限定的成员指针 |
P0704R1 |
8 | 6 | 19.0* | 10.0.0* | 5.1 | ||||||||
概念 |
P0734R0 |
6 (仅 TS) 10 | 10 | 19.23* (部分)* | ||||||||||
不求值语境中的 lambda |
P0315R4 |
9 | ||||||||||||
三路比较运算符 |
P0515R3 |
10 | 8 (部分) 10 | 19.20* | 5.1 | |||||||||
DR :简化隐式 lambda 捕获 |
P0588R1 |
8 | 19.24* | 5.1 | ||||||||||
基于范围的 for 的初始化语句 |
P0614R1 |
9 | 8 | 19.25* | 11.0.0* | 6.0 | ||||||||
可默认构造与可赋值的无状态 lambda |
P0624R2 |
9 | 8 | 19.22* | 10.0.1* | 5.1 | ||||||||
预置复制构造函数与 const 的不匹配 |
P0641R2 |
9 | 8 | 19.21* (部分) | 10.0.1* | 5.1 | ||||||||
特化上的访问检查 |
P0692R1 |
是 | 8 (部分) | 19.26* | 10.0.1*(部分) | 5.1 | ||||||||
ADL 与不可见的函数模板 |
P0846R0 |
9 | 9 | 19.21* | 11.0.3* | 5.1 | ||||||||
指定
函数定义何时为 常量求值所需要 |
P0859R0 |
5.2 (部分)* 9 | 8 | |||||||||||
属性
与
|
P0479R5 |
9 | 19.26* | 5.1 | ||||||||||
使
更可选 |
P0634R3 |
9 | 5.1 | |||||||||||
Lambda 初始化捕获中的包展开 |
P0780R2 |
9 | 9 | 19.22* | 11.0.3* | |||||||||
属性
|
P0840R2 |
9 | 9 | 11.0.3* | 5.1 | |||||||||
DR :放松 结构化绑定 定制点查找规则 |
P0961R1 |
8 | 8 | 19.21* | 10.0.1* | 5.1 | ||||||||
DR :放松 范围
循环 定制点查找规则 |
P0962R1 |
8 | 5.1 | |||||||||||
DR :允许到可访问成员的结构化绑定 |
P0969R0 |
8 | 8 | 19.21* | 10.0.1* | 5.1 | ||||||||
销毁的 operator delete |
P0722R3 |
9 | 6 | 19.27* | 10.0.0* | 6.1 | ||||||||
非类型模板形参中的类类型 |
P0732R2 |
9 | 19.26* | |||||||||||
弃用经由
隐式捕获
|
P0806R2 |
9 | 19.22* | 5.1 | ||||||||||
|
P0892R2 |
9 | 9 | 19.24* | 11.0.3* | 5.1 | ||||||||
集成特性测试宏 |
P0941R2 |
5 | 3.4 | 19.15* (部分) 19.20* | 是 | 5.0 | ||||||||
禁止有用户声明构造函数的聚合体 |
P1008R1 |
9 | 8 | 19.20* | 10.0.1* | 5.1 | ||||||||
constexpr 虚函数 |
P1064R0 |
9 | 9 | 11.0.3* | 5.1 | |||||||||
比较的一致性改进 |
P1120R0 |
10 | 8 (部分) 10 | 19.22* | 10.0.1*(部分) | 5.1 | ||||||||
|
P0482R6 |
9 | 7 | 19.22* | 10.0.0* | 5.1 | ||||||||
|
P0595R2 |
9 | 9 | 19.25* | 11.0.3* | 5.1 | 19.1 | |||||||
constexpr 函数中的
–
块 |
P1002R1 |
9 | 8 | 19.25* | 10.0.1* | 5.1 | ||||||||
立即函数 |
P1073R3 |
10 (部分)* | 5.1 | |||||||||||
嵌套 inline 命名空间 |
P1094R2 |
9 | 8 | 10.0.1* | 5.1 | |||||||||
有制约 声明 的另一种手段 |
P1141R2 |
10 | 19.26* (部分) | |||||||||||
有符号整数为补码 |
P1236R1 |
9 | 9 | 11.0.3* | ||||||||||
constexpr
及多态
|
P1327R1 |
10 | 9 | 11.0.3* | 5.1 | |||||||||
在 constexpr 内更改联合体的活跃成员 |
P1330R0 |
9 | 9 | 19.10* | 11.0.3* | 5.1 | ||||||||
协程 |
P0912R5 |
10 | 8 (部分) | 19.25* (部分) | 10.0.1*(部分) | 5.1 | ||||||||
聚合体的括号初始化 |
P0960R3 |
10 | 5.1 | |||||||||||
DR : new 表达式 中的数组大小推导 |
P1009R2 |
9 | 11.0.3* | 5.1 | ||||||||||
模块 |
P1103R3 |
8 (部分) | 19.25* (部分) | 10.0.1*(部分) | ||||||||||
更强的 Unicode 要求 |
P1041R4 P1139R2 |
10 | 是 | 19.0*(P1041R4) 19.26*(P1139R2) | 是 | N/A | ||||||||
|
P1185R2 |
10 | 10 | 19.22* | 5.1 | |||||||||
DR :拥有不同异常说明的显式默认化函数 |
P1286R2 |
10 | 9 | 11.0.3* | 5.1 | |||||||||
结构化绑定的 lambda 捕获与存储类说明符 |
P1091R3 P1381R1 |
10 | 8 (部分) | 10.0.1*(部分) | 5.1 | |||||||||
容许转换到未知边界数组 |
P0388R4 |
10 | 6.0 | |||||||||||
constexpr 容器操作 |
P0784R7 |
10 | 10 | 6.0 | ||||||||||
弃用
的某些用法 |
P1152R4 |
10 | 10 | 6.0 | ||||||||||
|
P1143R2 |
10 | 10 | |||||||||||
弃用下标中的逗号运算符 |
P1161R3 |
10 | 9 | 19.25* | 11.0.3* | 6.0 | ||||||||
带消息的
|
P1301R4 |
10 | 9 | 19.25* | 11.0.3* | 6.0 | ||||||||
constexpr 函数中的平凡默认初始化 |
P1331R2 |
10 | 10 | 6.0 | ||||||||||
constexpr 函数中的不求值汇编声明 |
P1668R1 |
10 | 10 | 6.1 | ||||||||||
using enum |
P1099R5 |
19.24* | ||||||||||||
对指定的比较类别合成三路比较 |
P1186R3 |
10 | 10 | 19.24* | 6.0 | |||||||||
DR :构造函数的
|
P1771R1 |
10 | 9 | 19.24* | 11.0.3* | 6.0 | ||||||||
别名模板的 类模板实参推导 |
P1814R0 |
10 | ||||||||||||
聚合类的类模板实参推导 |
P1816R0 |
10 | ||||||||||||
DR :更多局部对象与右值引用的 隐式移动 |
P1825R0 |
19.24* | 6.0 | |||||||||||
允许默认化按值比较 |
P1946R0 |
10 | 19.25* | 6.1 | ||||||||||
移除
与
|
P1959R0 |
10 | 19.25* | |||||||||||
非类型模板形参的不一致 |
P1907R1 |
9 | 19.26* | |||||||||||
DR :伪析构函数终结对象生存期 |
P0593R6 |
11 | ||||||||||||
DR :应认为从
到
的转换为窄化 |
P1957R2 |
10* | ||||||||||||
C++20 功能特性 | 提案 | GCC | Clang | MSVC | Apple Clang | EDG eccp | Intel C++ | IBM XLC++ | Sun/Oracle C++ | Embarcadero C++ Builder | Cray | Portland Group (PGI) | Nvidia nvcc |
C++20 库功能特性
C++20 功能特性 | 提案 | GCC libstdc++ | Clang libc++ | Apple Clang | MSVC 标准库 | Sun/Oracle C++ 标准库 | Embarcadero C++ Builder 标准库 | Cray C++ 标准库 |
[ 折叠 ] |
---|---|---|---|---|---|---|---|---|---|
|
P0463R1 |
8 | 7 | 10.0.0* | 19.22* | ||||
扩展 std::make_shared() 以支持数组 |
P0674R1 |
19.27* | |||||||
浮点原子类型 |
P0020R6 |
10 | 19.22* | ||||||
同步缓冲的 输出流 |
P0053R7 |
||||||||
的
|
P0202R3 |
10 | 8 (部分) | 10.0.1*(部分) | 19.26* | ||||
“ 的更多
|
P0415R1 |
9 | 7 (部分) | 10.0.0*(部分) | 19.27* | ||||
使 std::memory_order 为有作用域枚举 |
P0439R0 |
9 | 9 | 11.0.3* | 19.25* | ||||
字符串 前缀与后缀检查 |
P0457R2 |
9 | 6 | 19.21* | |||||
的库支持 “ |
P0768R1 |
10 | 7 (部分) | 10.0.0*(部分) | 19.20* (部分) | ||||
|
P0550R2 |
9 | 6 | 10.0.0* | 19.20* | ||||
标准库中的
|
P0600R1 |
9 | 7 (部分) | 10.0.0*(部分) | 19.13* (部分) 19.22* | ||||
于 数值算法 使用
|
P0616R0 |
9 | 19.23* | ||||||
转换指针为裸指针的工具 |
P0653R2 |
8 | 6 | 是 | 19.22* | ||||
原子
与
|
P0718R2 |
19.27* | |||||||
|
P0122R7 |
10 | 7 | 10.0.0* | 19.26* | ||||
日历 与 时区 |
P0355R7 |
7 (部分) | 10.0.0*(部分) | ||||||
“ |
P0754R2 |
9 | 7 | 10.0.0* | 19.22* | ||||
比较无序容器 |
P0809R0 |
16.0* | |||||||
常量表达式迭代器 (ConstexprIterator) 要求 |
P0858R0 |
9 | 19.11* | ||||||
std::basic_string::reserve() 不应收缩 |
P0966R1 |
8 | 10.0.1* | 19.25* | |||||
|
P0019R8 |
10 | |||||||
关联容器的
成员函数 |
P0458R2 |
9 | 19.21* | ||||||
DR : 逐片构造 的受保证复制消除 |
P0475R1 |
9 | |||||||
|
P0476R2 |
19.27* | |||||||
整数的 2 的幂的运算 |
P0556R3 P1956R1 |
9 (P0556R3) 10 (P1956R1) | 19.25*(P0556R3) 19.27*(P1956R1) | ||||||
改进仿
算法的返回值 |
P0646R1 |
9 | 10 | 19.21* | |||||
|
P0722R3 |
9 | 9 | 11.0.3* | 19.27* | ||||
|
P0758R1 |
9 | 9 | 11.0.3* | 19.23* | ||||
添加 shift 到
|
P0769R2 |
10 | 19.21* | ||||||
std::swap() 与
相关函数的 constexpr |
P0879R0 |
10 | 19.26* | ||||||
|
P0887R1 |
9 | 8 | 10.0.1* | 19.21* | ||||
概念库 |
P0898R3 |
10 | 19.23* | ||||||
的
比较运算符 |
P1023R0 |
10 | 8 | 10.0.1* | 19.27* | ||||
与
|
P0318R1 |
9 | 8 | 10.0.1* | 19.21* | ||||
|
P0356R5 |
9 | 19.25* | ||||||
不完整类型的 std::reference_wrapper |
P0357R3 |
9 | 8 | 10.0.1* | 19.26* | ||||
修正
|
P0487R1 |
8 | 10.0.1* | 19.23* | |||||
的库支持 |
P0482R6 |
9 | 19.22* | ||||||
实现 使用分配器 构造 的 工具函数 |
P0591R4 |
9 | |||||||
DR : std::variant 与 std::optional 应传播复制/移动平凡性 |
P0602R4 |
8.3 | 8 | 10.0.1* | 19.11* | ||||
理智的 std::variant 转换构造函数 |
P0608R3 |
10 | 9 | 11.0.3* | |||||
std::function 的移动构造函数应为
|
P0771R1 |
7.2 | 6 | 是 | 19.22* | ||||
一个 范围 提案 |
P0896R4 |
10 | |||||||
无序容器的异质查找 |
P0919R3 P1690R1 |
19.23*(P0919R3) 19.25*(P1690R1) | |||||||
“
、
及
应为
|
P0972R0 |
9 | 8 | 10.0.1* | 19.14* | ||||
std::pointer_traits 中的
|
P1006R1 |
9 | 8 | 10.0.1* | 19.26* | ||||
|
P1007R3 |
9 | |||||||
移除
的比较运算符 |
P1085R2 |
10 | 8 | 10.0.1* | 19.26* | ||||
使
的有状态分配器传播更加一致 |
P1165R1 |
10 | 19.26* | ||||||
一致容器擦除 |
P1209R0 P1115R3 |
9 (P1209R0) 10 (P1115R3) | 8 (P1209R0) 11 (P1115R3) | 10.0.1*(P1209R0) | 19.25*(P1209R0) 19.27*(P1115R3) | ||||
与
|
P0811R3 |
9 | 9 | 11.0.3* | 19.23* (部分) | ||||
的实用性增强 |
P1024R3 |
10 | 9 | 11.0.3* | 19.26* | ||||
DR :使
自发 |
P1164R1 |
8.3 | 19.20* | ||||||
与
的无符号长度 |
P1227R2 |
10 | 9 | 11.0.3* | 19.25* | ||||
有界 及 无界 数组特征 |
P1357R1 |
9 | 9 | 11.0.3* | |||||
|
P0325R4 |
10 | 10 | 19.25* | |||||
std::basic_stringbuf 缓冲的有效访问 |
P0408R7 |
||||||||
布局 兼容性 与 指针 可互转换性 特征 |
P0466R5 |
||||||||
位操作 |
P0553R4 |
9 | 9 | 11.0.3* | 19.25* | ||||
数学常数 “ |
P0631R8 |
10 | 19.25* | ||||||
文本格式化 |
P0645R10 |
||||||||
与
|
P0660R10 |
10 | |||||||
constexpr std::allocator 及相关工具 |
P0784R7 |
10 | |||||||
constexpr std::string |
P0980R1 |
||||||||
constexpr std::vector |
P1004R2 |
||||||||
输入范围适配器 |
P1035R7 |
10 | |||||||
constexpr std::invoke() 及相关工具 |
P1065R2 |
10 | |||||||
原子等待与提醒、
、
及
|
P1135R6 |
||||||||
|
P1208R6 |
7 (仅 TS) | |||||||
添加
到标准库 |
P1614R2 |
10 | |||||||
std::atomic 与 std::atomic_flag 的 constexpr 默认构造函数 |
P0883R2 |
19.26* | |||||||
数值算法 的 constexpr |
P1645R1 |
10 | 19.26* | ||||||
安全整数比较 |
P0586R2 |
10 | 19.27* | ||||||
C++20 功能特性 | 提案 | GCC libstdc++ | Clang libc++ | Apple Clang | MSVC 标准库 | Sun/Oracle C++ 标准库 | Embarcadero C++ Builder 标准库 | Cray C++ 标准库 |
C++17 功能特性
C++17 核心语言功能特性
C++17 功能特性 | 提案 | GCC | Clang | MSVC | Apple Clang | EDG eccp | Intel C++ | IBM XLC++ | Sun/Oracle C++ | Embarcadero C++ Builder | Cray | Portland Group (PGI) | Nvidia nvcc |
[ 折叠 ] |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
直接列表初始化的新 auto 规则 |
N3922 |
5 | 3.8 | 19.0* | 是 | 4.10.1 | 17.0 | 10.3 | 17.7 | |||||
无消息的
|
N3928 |
6 | 2.5 | 19.10* | 是 | 4.12 | 18.0 | 10.3 | 17.7 | |||||
模板模板形参中的
|
N4051 |
5 | 3.5 | 19.0* | 是 | 4.10.1 | 17.0 | 10.3 | 17.7 | |||||
移除三标符 |
N4086 |
5 | 3.5 | 16.0* | 是 | 5.0 | 19.0.1 | 10.3 | ||||||
嵌套命名空间定义 |
N4230 |
6 | 3.6 | 19.0* | 是 | 4.12 | 17.0 | 10.3 | 17.7 | |||||
命名空间和枚举项的属性 |
N4266 |
4.9 (部分)* 6 | 3.6 | 19.0* | 是 | 4.11 | 17.0 | 10.3 | 17.7 | |||||
字符字面量 |
N4267 |
6 | 3.6 | 19.0* | 是 | 4.11 | 17.0 | 10.3 | 17.7 | |||||
允许所有非类型模板实参的常量求值 |
N4268 |
6 | 3.6 | 19.12* | 是 | 5.0 | 19.0.1 | 10.3 | ||||||
折叠表达式 |
N4295 |
6 | 3.6 | 19.12* | 是 | 4.14 | 19.0 | 10.3 | 18.1 | |||||
一元折叠表达式和空形参包 |
P0036R0 |
6 | 3.9 | 19.12* | 是 | 4.14 | 10.3 | |||||||
移除
关键字的已弃用用法 |
P0001R1 |
7 | 3.8 | 19.11* | 是 | 4.13 | 18.0 | 10.3 | 17.7 | |||||
移除已弃用的
|
P0002R1 |
7 | 3.8 | 19.11* | 是 | 4.13 | 18.0 | 10.3 | 17.7 | |||||
令异常规定为类型系统的一部分 |
P0012R1 |
7 | 4 | 19.12* | 是 | 4.14 | 19.0 | 10.3 | ||||||
有基类的类的 聚合初始化 |
P0017R1 |
7 | 3.9 | 19.14* | 是 | 5.0 | 19.0.1 | 10.3 | ||||||
预处理器条件中的
|
P0061R1 |
5 | 是 | 19.11* | 是 | 4.13 | 18.0 | 10.3 | 17.7 | |||||
DR : 继承构造函数 的新规定 (DR1941 等) |
P0136R1 |
7 | 3.9 | 19.14* | 是 | 6.1 | 10.3 | 19.1 | ||||||
的 lambda 捕获 |
P0018R3 |
7 | 3.9 | 19.11* | 是 | 4.14 | 19.0 | 10.3 | 18.1 | |||||
枚举的直接列表初始化 |
P0138R2 |
7 | 3.9 | 19.11* | 是 | 4.14 | 18.0 | 10.3 | ||||||
constexpr lambda 表达式 |
P0170R1 |
7 | 5 | 19.11* | 是 | 4.14 | 19.0 | 10.3 | 18.1 | |||||
基于范围 for 的相异 begin 和 end 类型 |
P0184R0 |
6 | 3.9 | 19.10* | 是 | 4.12 | 18.0 | 10.3 | 17.7 | |||||
属性 |
P0188R1 |
7 | 3.9 | 19.10* | 是 | 4.13 | 18.0 | 10.3 | 17.7 | |||||
属性 |
P0189R1 |
7 | 3.9 | 19.11* | 是 | 4.13 | 18.0 | 10.3 | 17.7 | |||||
属性 |
P0212R1 |
7 | 3.9 | 19.11* | 是 | 4.13 | 18.0 | 10.3 | 17.7 | |||||
十六进制 浮点字面量 |
P0245R1 |
3.0 | 是 | 19.11* | 是 | 4.13 | 18.0 | 10.3 | 17.7 | |||||
使用属性命名空间而不重复 |
P0028R4 |
7 | 3.9 | 19.11* | 是 | 4.13 | 18.0 | 10.3 | 17.7 | |||||
过对齐数据的 动态内存分配 |
P0035R4 |
7 | 4 | 19.12* | 10.0.0* | 4.14 | 10.3 | |||||||
类模板实参推导 |
P0091R3 |
7 | 5 | 19.14* | 是 | 5.0 | 19.0.1 | 10.3 | 19.1 | |||||
具有
类型的非类型模板形参 |
P0127R2 |
7 | 4 | 19.14* | 是 | 5.0 | 19.0.1 | 10.3 | 19.1 | |||||
受保证的 复制消除 |
P0135R1 |
7 | 4 | 19.13* | 是 | 5.0 | 19.0.1 | 10.3 | 19.1 | |||||
替换含引用成员的类对象 |
P0137R1 |
7 | 6 | 19.14* | 是 | 5.0 | 10.3 | |||||||
更严格的 表达式求值顺序 |
P0145R3 |
7 | 4 | 19.14* | 是 | 5.0 | 19.0.1 | 10.3 | ||||||
结构化绑定 |
P0217R3 |
7 | 4 | 19.11* | 是 | 4.14 | 19.0 | 10.3 | 18.1 | |||||
忽略未知属性 |
P0283R2 |
是 | 3.9 | 19.11* | 是 | 4.13 | 18.0 | 10.3 | 17.7 | |||||
constexpr if 语句 |
P0292R2 |
7 | 3.9 | 19.11* | 是 | 4.14 | 19.0 | 10.3 | 18.1 | |||||
if 和 switch 的初始化语句 |
P0305R1 |
7 | 3.9 | 19.11* | 是 | 4.14 | 18.0 | 10.3 | 18.1 | |||||
inline 变量 |
P0386R2 |
7 | 3.9 | 19.12* | 是 | 4.14 | 19.0 | 10.3 | 18.1 | |||||
移除 动态异常说明 |
P0003R5 |
7 | 4 | 19.10* | 是 | 4.14 | 19.0 | 10.3 | ||||||
using 声明中的包展开 |
P0195R2 |
7 | 4 | 19.14* | 是 | 5.0 | 10.3 | |||||||
DR :模板模板实参的匹配排除了兼容的模板 |
P0522R0 |
7 | 4 | 19.12* | 是 | 5.0 | 19.0.1 | 10.3 | ||||||
C++17 功能特性 | 提案 | GCC | Clang | MSVC | Apple Clang | EDG eccp | Intel C++ | IBM XLC++ | Sun/Oracle C++ | Embarcadero C++ Builder | Cray | Portland Group (PGI) | Nvidia nvcc |
C++17 库功能特性
C++17 功能特性 | 提案 | GCC libstdc++ | Clang libc++ | Apple Clang | MSVC 标准库 | Intel 并行 STL | Sun/Oracle C++ 标准库 | Embarcadero C++ Builder 标准库 | Cray C++ 标准库 |
[ 折叠 ] |
---|---|---|---|---|---|---|---|---|---|---|
std::void_t |
N3911 |
6 | 3.6 | 是 | 19.0* | N/A | 10.3 | |||
|
N4259 |
6 | 3.7 | 是 | 19.0* | N/A | 10.3 | |||
std::size() 、 std::empty() 与 std::data() |
N4280 |
6 | 3.6 | 是 | 19.0* | N/A | 10.3 | |||
改进 std::pair 与 std::tuple |
N4387 |
6 | 4 | 是 | 19.0* | N/A | 10.3 | |||
std::bool_constant |
N4389 |
6 | 3.7 | 是 | 19.0* | N/A | 10.3 | |||
std::shared_mutex (无时限) |
N4508 |
6 | 3.7 | 是 | 19.0* | N/A | 10.3 | |||
类型特性 变量模板 |
P0006R0 |
7 | 3.8 | 是 | 19.0* | N/A | 10.3 | |||
逻辑运算符类型特性 |
P0013R1 |
6 | 3.8 | 是 | 19.0* | N/A | 10.3 | |||
标准化并行 TS |
P0024R2 |
9* | 19.14* | 18.0* | ||||||
std::clamp() |
P0025R0 |
7 | 3.9 | 10.0.0* | 19.0* | N/A | 10.3 | |||
硬件干涉大小 |
P0154R1 |
19.11* | N/A | |||||||
(nothrow-)swappable 特性 |
P0185R1 |
7 | 3.9 | 10.0.0* | 19.0* | N/A | 10.3 | |||
文件系统库 |
P0218R1 |
8 | 7 | 11.0.0* | 19.14* | N/A | 10.3 | |||
std::string_view |
N3921 P0220R1 |
7 | 4 | 10.0.0* | 19.10* | N/A | 10.3 | |||
std::any |
P0220R1 |
7 | 4 | 10.0.0* | 19.10* | N/A | 10.3 | |||
std::optional |
P0220R1 |
7 | 4 | 10.0.0* | 19.10* | N/A | 10.3 | |||
多态内存资源 |
P0220R1 |
9 | 19.13* | N/A | 10.3 | |||||
数学特殊函数 |
P0226R1 |
7 | 19.14* | N/A | 10.3 | |||||
C++17 应指代 C11 而非 C99 |
P0063R3 |
9 | 7 | 19.0* (部分)* | N/A | 10.3 | ||||
接合 map 与 set |
P0083R3 |
7 | 8 | 10.0.0* | 19.12* | N/A | ||||
std::variant |
P0088R3 |
7 | 4 | 10.0.0* | 19.10* | N/A | 10.3 | |||
std::make_from_tuple() |
P0209R2 |
7 | 3.9 | 是 | 19.10* | N/A | 10.3 | |||
std::has_unique_object_representations |
P0258R2 |
7 | 6 | 是 | 19.11* | N/A | 10.3 | |||
std::gcd() 与 std::lcm() |
P0295R0 |
7 | 4 | 是 | 19.11* | N/A | 10.3 | |||
std::not_fn |
P0005R4 P0358R1 |
7 | 3.9 | 19.12* | N/A | 10.3 | ||||
初等字符串转换 |
P0067R5 |
8 (无浮点) | 7 (无浮点) | 19.14* (无浮点)* 19.24* | N/A | |||||
有数组支持的 std::shared_ptr 与 std::weak_ptr |
P0414R2 |
7 | 11 | 19.12* | N/A | 10.3 | ||||
|
P0156R2 |
7 | 5 | 是 | 19.11* | N/A | 10.3 | |||
|
P0298R3 |
7 | 5 | 是 | 19.11* | N/A | 10.3 | |||
|
LWG2911 |
7 | 5 | 是 | 19.15* | N/A | 10.3 | |||
C++17 功能特性 | 提案 | GCC libstdc++ | Clang libc++ | Apple Clang | MSVC 标准库 | Intel 并行 STL | Sun/Oracle C++ 标准库 | Embarcadero C++ Builder 标准库 | Cray C++ 标准库 |
C++14 功能特性
C++14 核心语言功能特性
C++14 功能特性 | 提案 | GCC | Clang | MSVC | Apple Clang | EDG eccp | Intel C++ | IBM XLC++ | Sun/Oracle C++ | Embarcadero C++ Builder | Cray | Portland Group (PGI) | Nvidia nvcc |
[ 折叠 ] |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
按语境转换 的遣词调整 |
N3323 |
4.9 | 3.4 | 18.0* | 是 | 4.9 | 16.0 | 13.1.2* | 5.15 | 10.3 | 8.6 | 16.1 | 9.0 | |
二进制字面量 |
N3472 |
4.3 (GNU) 4.9 | 2.9 | 19.0* | 是 | 4.10 | 11.0 | 13.1.2* | 5.14 | 10.3 | 8.6 | 2015 | 9.0 | |
,普通函数的返回类型推导 |
N3638 |
4.8 (部分)* 4.9 | 是 | 19.0* | 是 | 4.9 | 15.0 | 13.1.2* | 5.15 | 10.3 | 8.6 | 16.1 | 9.0 | |
带初始化/泛化的 lambda 捕获 (init-capture) |
N3648 |
4.5 (部分) 4.9 | 3.4 | 19.0* | 是 | 4.10 | 15.0 | 16.1.1* | 5.15 | 10.3 | 8.6 | 16.1 | 9.0 | |
泛型 lambda 表达式 |
N3649 |
4.9 | 3.4 | 19.0* | 是 | 4.10 | 16.0 | 13.1.2* | 5.15 | 10.3 | 8.6 | 16.1 | 9.0 | |
变量模板 |
N3651 |
5 | 3.4 | 19.0* | 是 | 4.11 | 17.0 | 13.1.2* | 5.15 | 10.3 | 8.6 | 17.4 | 9.0 | |
扩展的 constexpr |
N3652 |
5 | 3.4 | 19.10* | 是 | 4.11 | 17.0 | 13.1.2* | 5.15 | 10.3 | 8.6 | 17.4 | 9.0 | |
带成员初始化器的聚合体 (NSDMI) |
N3653 |
5 | 3.3 | 19.10* | 是 | 4.9 | 16.0 | 16.1.1* | 5.14 | 10.3 | 8.6 | 16.1 | 9.0 | |
忽略/扩展 内存分配 |
N3664 |
N/A | 3.4 | N/A | 是 | N/A | N/A | N/A | N/A | 10.3 | 8.6 | 17.4 | N/A | |
属性 |
N3760 |
4.9 | 3.4 | 19.0* | 是 | 4.9 | 15.0* 16.0 | 13.1.2* | 5.14 | 10.3 | 8.6 | 16.1 | 9.0 | |
具大小解分配 |
N3778 |
5 | 3.4 | 19.0* | 是 | 4.10.1 | 17.0 | 16.1.1* | 5.14 | 10.3 | 8.6 | 16.1 | ||
单引号作为数位分隔符 |
N3781 |
4.9 | 3.4 | 19.0* | 是 | 4.10 | 16.0 | 13.1.2* | 5.14 | 10.3 | 8.6 | 2015 | 9.0 | |
C++14 功能特性 | 提案 | GCC | Clang | MSVC | Apple Clang | EDG eccp | Intel C++ | IBM XLC++ | Sun/Oracle C++ | Embarcadero C++ Builder | Cray | Portland Group (PGI) | Nvidia nvcc |
C++14 库功能特性
C++14 功能特性 | 提案 | GCC libstdc++ | Clang libc++ | Apple Clang | MSVC 标准库 | Sun/Oracle C++ 标准库 | Embarcadero C++ Builder 标准库 | Cray C++ 标准库 |
[ 折叠 ] |
---|---|---|---|---|---|---|---|---|---|
“ 的
|
N3302 |
5 | 3.4 | 是 | 19.0* | 5.15 | 10.3 | 8.6 | |
通透的 运算符函数对象 |
N3421 |
4.9 | 3.4 | 是 | 18.0* | 5.15 | 10.3 | 8.6 | |
std::result_of 与 SFINAE |
N3462 |
5 | 是 | 是 | 19.0* | 5.15 | 10.3 | 8.6 | |
“ 的
|
N3469 |
5 | 3.4 | 是 | 19.0* | 5.15 | 10.3 | 8.6 | |
“ 的
|
N3470 |
5 | 3.4 | 是 | 19.0* | 5.15 | 10.3 | 8.6 | |
和 “ 的
|
N3471 |
5 | 3.4 | 是 | 19.0* | 5.15 | 10.3 | 8.6 | |
改进的 std::integral_constant |
N3545 |
5 | 3.4 | 是 | 19.0* | 5.15 | 10.3 | 8.6 | |
的用户定义字面量 |
N3642 |
5 | 3.4 | 是 | 19.0* | 5.15 | 10.3 | 8.6 | |
空向前迭代器 |
N3644 |
5 (部分) | 3.4 | 是 | 19.0* | 5.15 | 10.3 | 8.6 | |
std::quoted |
N3654 |
5 | 3.4 | 是 | 19.0* | 5.15 | 10.3 | 8.6 | |
std::make_unique |
N3656 |
4.9 | 3.4 | 是 | 18.0* | 5.15 | 10.3 | 8.6 | |
异质关联查找 |
N3657 |
5 | 3.4 | 是 | 19.0* | 5.15 | 10.3 | 8.6 | |
std::integer_sequence |
N3658 |
5 | 3.4 | 是 | 19.0* | 5.15 | 10.3 | 8.6 | |
std::shared_timed_mutex |
N3659 |
5 | 3.4 | 是 | 19.0* | 5.15 | 10.3 | 8.6 | |
std::exchange |
N3668 |
5 | 3.4 | 是 | 19.0* | 5.15 | 10.3 | 8.6 | |
修正无
的
成员函数 |
N3669 |
5 | 3.4 | 是 | 19.0* | 5.15 | 10.3 | 8.6 | |
|
N3670 |
5 | 3.4 | 是 | 19.0* | 5.15 | 10.3 | 8.6 | |
双范围的 std::equal 、 std::is_permutation 、 std::mismatch |
N3671 |
5 | 3.4 | 是 | 19.0* | 5.15 | 10.3 | 8.6 | |
C++14 功能特性 | 提案 | GCC libstdc++ | Clang libc++ | Apple Clang | MSVC 标准库 | Sun/Oracle C++ 标准库 | Embarcadero C++ Builder 标准库 | Cray C++ 标准库 |
C++11 功能特性
C++11 核心语言功能特性
C++11 功能特性 | 提案 | GCC | Clang | MSVC | Apple Clang | EDG eccp | Intel C++ | IBM XLC++ | Sun/Oracle C++ | Embarcadero C++ Builder | Cray | Portland Group (PGI) | Nvidia nvcc | HP aCC | Digital Mars C++ |
[ 折叠 ] |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
C99 预处理器 |
N1653 |
4.3 | 是 | 19.0*(部分)* 19.26* | 是 | 4.1 | 11.1 | 10.1 | 5.9 | 是 | 8.4 | 2015 | 7.0 | A.06.25 | 是 | |
static_assert |
N1720 |
4.3 | 2.9 | 16.0* | 是 | 4.1 | 11.0 | 11.1 | 5.13 | 是 | 8.4 | 2015 | 7.0 | A.06.25 | 8.52 | |
右角括号 |
N1757 |
4.3 | 是 | 14.0* | 是 | 4.1 | 11.0 | 12.1 | 5.13 | 是 | 8.4 | 2015 | 7.0 | |||
扩展的 friend 声明 |
N1791 |
4.7 | 2.9 | 16.0*(部分) 18.0* | 是 | 4.1 | 11.1 (部分) 12.0 | 11.1 | 5.13 | 是 | 8.4 | 2015 | 7.0 | A.06.25 | ||
long long |
N1811 |
是 | 是 | 14.0* | 是 | 是 | 是 | 是 | 是 | 是 | 8.4 | 2015 | 7.0 | 是 | 是 | |
类型特征的编译器支持 |
N1836 |
4.3 | 3.0 | 14.0* | 是 | 4.0 | 10.0 | 13.1.3 | 5.13 | 是 | 8.4 | 2015 | 6.16 | |||
|
N1984 |
4.4 | 是 | 16.0* | 是 | 3.9 | 11.0 (v0.9) 12.0 | 11.1 | 5.13 | 是 | 8.4 | 2015 | 7.0 | A.06.25 | ||
委托构造函数 |
N1986 |
4.7 | 3.0 | 18.0* | 是 | 4.7 | 14.0 | 11.1 | 5.13 | 是 | 8.4 | 2015 | 7.0 | A.06.28 | ||
extern template |
N1987 |
3.3 | 是 | 12.0* | 是 | 3.9 | 9.0 | 11.1 | 5.13 | 是 | 8.4 | 2015 | 7.0 | A.06.25 | ||
|
N2235 |
4.6 | 3.1 | 19.0* | 是 | 4.6 | 13.0 (部分) 14.0 | 12.1 (部分) 13.1 | 5.13 | 是 | 8.4 | 2015 | 7.0 | A.06.28 | ||
模板别名 |
N2258 |
4.7 | 3.0 | 18.0* | 是 | 4.2 | 12.1 | 13.1.1* | 5.13 | 是 | 8.4 | 2015 | 7.0 | A.06.27 | ||
与
|
N2249 |
4.4 | 2.9 | 19.0* | 是 | 4.4 | 12.1* 14.0 | 13.1.1* | 5.13 | 是 | 8.4 | 2015 | 7.0 | A.06.27 | 8.52 | |
|
N2341 |
4.8 | 3.0 | 19.0* | 是 | 4.8 | 15.0 | 13.1.2* | 5.13 | 是 | 8.6 | 2015 | 7.0 | |||
|
N2341 |
4.5 | 2.9 | 19.0* | 是 | 4.8 | 15.0 | 13.1.2* | 5.13 | 是 | 8.4 | 2015 | 7.0 | |||
默认化与被删除的函数 |
N2346 |
4.4 | 3.0 | 18.0* | 是 | 4.1 | 12.0 | 13.1 | 5.13 | 是 | 8.4 | 2015 | 7.0 | A.06.25 | ||
强类型 enum |
N2347 |
4.4 | 2.9 | 17.0* | 是 | 4.0 | 13.0 | 12.1 | 5.13 | 是 | 8.4 | 2015 | 7.0 | A.06.25 | ||
原子操作 |
N2427 |
4.4 | 3.1 | 17.0* | 是 | Yes | 13.0 | 13.1.2* | 5.14 | 是 | 8.4 | 2015 | ||||
nullptr |
N2431 |
4.6 | 2.9 | 16.0* | 是 | 4.2 | 12.1 | 13.1 | 5.13 | 是 | 8.4 | 2015 | 7.0 | A.06.27 | 8.52 | |
显式 转换运算符 |
N2437 |
4.5 | 3.0 | 18.0* | 是 | 4.4 | 13.0 | 12.1 | 5.13 | 是 | 8.4 | 2015 | 7.0 | A.06.27 | ||
引用限定符 |
N2439 |
4.8.1 | 2.9 | 19.0* | 是 | 4.7 | 14.0 | 13.1.2* | 5.13 | 是 | 8.4 | 2015 | 7.0 | A.06.28 | ||
Unicode 字符串字面量 |
N2442 |
4.4 | 3.0 | 19.0* | 是 | 4.7 | 11.0* | 10.1* 13.1.1* | 5.7 | 是 | 8.4 | 2015 | 7.0 | A.06.28 | 8.52 | |
未处理的 字符串字面量 |
N2442 |
4.5 | 是 | 18.0* | 是 | 4.7 | 14.0 | 13.1.1* | 5.13 | 是 | 8.4 | 2015 | 7.0 | A.06.28 | 8.52 | |
内联命名空间 |
N2535 |
4.4 | 2.9 | 19.0* | 是 | 4.5 | 14.0 | 11.1 | 5.13 | 是 | 8.4 | 2015 | 7.0 | A.06.28 | ||
继承构造函数 |
N2540 |
4.8 | 3.3 | 19.0* | 是 | 4.8 | 15.0 | 13.1.1* | 5.13 | 是 | 8.4 | 2015 | 7.0 | |||
尾随的函数返回类型 |
N2541 |
4.4 | 2.9 | 16.0* | 是 | 4.1 | 12.0 | 12.1 | 5.13 | 是 | 8.4 | 2015 | 7.0 | A.06.27 | ||
无限制的 联合体 |
N2544 |
4.6 | 3.0 | 19.0* | 是 | 4.6 | 14.0* | 13.1.2* | 5.13 | 是 | 8.4 | 2015 | 7.0 | A.06.28 | ||
变参数模板 |
N2242 N2555 |
4.3 (N2242) 4.4 | 2.9 | 18.0* | 是 | 4.3 (N2242) 4.3 | 12.1 | 11.1 (N2242) | 5.13 | 是 | 8.4 | 2015 | 7.0 | A.06.27 | ||
表达式 SFINAE |
N2634 |
4.4 | 2.9 | 19.14* | 是 | 4.2 | 12.1 | 是 | 8.4 | 2015 | 7.0 | |||||
局部与无名类型作为模板形参 |
N2657 |
4.5 | 2.9 | 16.0* | 是 | 4.2 | 12.0 | 13.1.2* | 5.13 | 是 | 8.4 | 2015 | 7.0 | A.06.27 | ||
线程局部存储 |
N2659 |
4.4 (部分) 4.8 | 3.3* | 16.0*(部分) 19.0* | 是 | 4.8 | 11.1 (部分) 15.0* | 10.1 (部分)* 13.1.2 (部分)* | 5.9 (部分) | 是 | 8.4 | 2015 | 8.52 (部分) | |||
带并发的动态初始化与析构( 魔法静态变量 ) |
N2660 |
4.3 | 2.9 | 19.0* | 是 | Yes | 11.1* | 13.1.2* | 5.13 | 是 | 8.4 | 2015 | A.06.25 | |||
垃圾收集与基于可达性的泄漏检测 |
N2670 |
|||||||||||||||
初始化器列表 |
N2672 |
4.4 | 3.1 | 18.0* | 是 | 4.5 | 13.0 (部分) 14.0 | 13.1.2* | 5.13 | 是 | 8.4 | 2015 | 7.0 | A.06.28 | ||
非静态数据成员初始化器 |
N2756 |
4.7 | 3.0 | 18.0* | 是 | 4.6 | 14.0 | 13.1.2* | 5.13 | 是 | 8.4 | 2015 | 7.0 | A.06.28 | ||
属性 |
N2761 |
4.8 | 3.3 | 19.0* | 是 | 4.2 | 12.1 | 13.1.1* | 5.13 | 是 | 8.4 | 2015 | 7.0 | A.06.27 | ||
前置 enum 声明 |
N2764 |
4.6 | 3.1 | 17.0* | 是 | 4.5 | 11.1 (部分) 14.0 | 12.1 | 5.13 | 是 | 8.4 | 2015 | 7.0 | |||
用户定义的字面量 |
N2765 |
4.7 | 3.1 | 19.0* | 是 | 4.8 | 15.0 | 13.1.2* | 5.14 | 是 | 8.4 | 2015 | 7.0 | |||
右值引用 |
N2118 N2844 CWG1138 |
4.3 (N2118) 4.5 | 2.9 | 16.0*(N2844) 17.0* | 是 | 4.5 | 11.1 (N2118) 12.0 (N2844) 14.0 | 12.1 | 5.13 | 是 | 8.4 | 2015 | 7.0* | A.06.25 | ||
Lambda 表达式 |
N2550 N2658 N2927 |
4.5 | 3.1 | 16.0*(N2658) 17.0* | 是 | 4.1 | 12.0 | 13.1.2* | 5.13 | 是 | 8.4 | 2015 | 7.0 | A.06.25 | ||
范围 for 循环 |
N2930 |
4.6 | 3.0 | 17.0* | 是 | 4.5 | 13.0 | 13.1.2* | 5.13 | 是 | 8.4 | 2015 | 7.0 | A.06.28 | ||
noexcept |
N3050 |
4.6 | 3.0 | 19.0* | 是 | 4.5 | 14.0 | 13.1.1* | 5.13 | 是 | 8.4 | 2015 | 7.0 | A.06.28 | ||
默认化的移动特殊 成员 函数 |
N3053 |
4.6 | 3.0 | 19.0* | 是 | 4.5 | 14.0 | 5.13 | 是 | 8.4 | 2015 | 7.0 | A.06.25 | |||
override 与 final |
N2928 N3206 N3272 |
4.7 | 2.9 | 14.0*(部分) 17.0* | 是 | 4.8 | 12.0 (N2928) 14.0 | 13.1.1* | 5.13 | 是 | 8.4 | 2015 | 7.0 | |||
|
N2343 N3276 |
4.3 (N2343) 4.8.1 | 2.9 | 16.0* | 是 | 4.2 (N2343) 4.8 | 11.0 (N2343) 12.0 | 11.1 (N2343) | 5.13 | 是 | 8.4 | 2015 | 7.0 | A.06.25 | 8.52 (N2343) | |
C++11 功能特性 | 提案 | GCC | Clang | MSVC | Apple Clang | EDG eccp | Intel C++ | IBM XLC++ | Sun/Oracle C++ | Embarcadero C++ Builder | Cray | Portland Group (PGI) | Nvidia nvcc | HP aCC | Digital Mars C++ |
C++11 库功能特性
C++11 功能特性 | 提案 | GCC libstdc++ | Clang libc++ | Apple Clang | MSVC 标准库 | Sun/Oracle C++ 标准库 | Embarcadero C++ Builder 标准库 | Cray C++ 标准库 |
[ 折叠 ] |
---|---|---|---|---|---|---|---|---|---|
类型特征 |
N1836 |
4.3 | 3.0 | 是 | 14.0* | 5.13 | 是 | 8.4 | |
垃圾收集与基于可达性的泄漏检测( 库支持 ) |
N2670 |
6 (无操作) | 3.4 (无操作) | 是 (无操作) | 19.0* (无操作) | ||||
金额、时间及十六进制浮点 I/O 操纵符 |
N2071 N2072 |
5 | 3.8 | 是 | 19.0* | 5.15 | |||
C++11 功能特性 | 提案 | GCC libstdc++ | Clang libc++ | Apple Clang | MSVC 标准库 | Sun/Oracle C++ 标准库 | Embarcadero C++ Builder 标准库 | Cray C++ 标准库 |
转载:
https://zh.cppreference.com/w/cpp/compiler_support
https://blog.csdn.net/jiange_zh/article/details/79356417