C++14 编译器支持
来自 cppreference.com
* - 将鼠标悬停在标有星号 * 的单元格上,以查看其他弹出式注释。
DRnn - "DR" 后面的数字 nn 表示缺陷报告应用到的目标 C++ 修订版本,例如,DR20 → C++20。
[编辑] C++14 核心语言特性
C++14 特性 |
论文 |
GCC |
Clang |
MSVC |
Apple Clang |
EDG eccp |
Intel C++ |
IBM XL C++ |
IBM Open XL C++ for AIX |
IBM Open XL C++ for z/OS |
Sun/Oracle C++ |
Embarcadero C++ Builder |
Cray |
Nvidia HPC C++ (前 PGI)* |
Nvidia nvcc |
|
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
为 上下文转换 调整了措辞 | N3323 | 4.9 | 3.4 | 18.0* | 是 | 4.9 | 16.0 | 13.1.2* | 17.1.0 | 1.1.0 | 5.15 | 10.3 | 8.6 | 16.1 | 9.0 | |
二进制字面量 | N3472 | 4.3 (GNU) 4.9 |
2.9 | 19.0 (2015)* | 是 | 4.10 | 11.0 | 13.1.2* | 17.1.0 | 1.1.0 | 5.14 | 10.3 | 8.6 | 2015 | 9.0 | |
decltype(auto),普通函数的返回类型推断 | N3638 | 4.8 (部分)* 4.9 |
3.3 (部分)* 3.4 |
19.0 (2015)* | 是 | 4.9 | 15.0 | 13.1.2* | 17.1.0 | 1.1.0 | 5.15 | 10.3 | 8.6 | 16.1 | 9.0 | |
初始化/泛化 lambda 捕获(init-capture) | N3648 | 4.5 (部分) 4.9 |
3.4 | 19.0 (2015)* | 是 | 4.10 | 15.0 | 16.1.1* | 17.1.0 | 1.1.0 | 5.15 | 10.3 | 8.6 | 16.1 | 9.0 | |
泛型 lambda 表达式 | N3649 | 4.9 | 3.4 | 19.0 (2015)* | 是 | 4.10 | 16.0 | 13.1.2* | 17.1.0 | 1.1.0 | 5.15 | 10.3 | 8.6 | 16.1 | 9.0 | |
变量模板 | N3651 | 5 | 3.4 | 19.0 (更新 2)* | 是 | 4.11 | 17.0 | 13.1.2* | 17.1.0 | 1.1.0 | 5.15 | 10.3 | 8.6 | 17.4 | 9.0 | |
扩展 constexpr | N3652 | 5 | 3.4 | 19.10* | 是 | 4.11 | 17.0 | 13.1.2* | 17.1.0 | 1.1.0 | 5.15 | 10.3 | 8.6 | 17.4 | 9.0 | |
具有 默认成员初始化器 的聚合体 | N3653 | 5 | 3.3 | 19.10* | 是 | 4.9 | 16.0 | 16.1.1* | 17.1.0 | 1.1.0 | 5.14 | 10.3 | 8.6 | 16.1 | 9.0 | |
省略/扩展 内存分配 | N3664 | N/A | 3.4 | N/A | 是 | N/A | N/A | N/A | 17.1.0 | 1.1.0 | N/A | 10.3 | 8.6 | 17.4 | N/A | |
[[已弃用]] 属性 |
N3760 | 4.9 | 3.4 | 19.0 (2015)* | 是 | 4.9 | 15.0* 16.0 |
13.1.2* | 17.1.0 | 1.1.0 | 5.14 | 10.3 | 8.6 | 16.1 | 9.0 | |
大小调整的释放 | N3778 | 5 | 3.4 | 19.0 (2015)* | 是 | 4.10.1 | 17.0 | 16.1.1* | 17.1.0 | 1.1.0 | 5.14 | 10.3 | 8.6 | 16.1 | ||
单引号 作为数字分隔符 | N3781 | 4.9 | 3.4 | 19.0 (2015)* | 是 | 4.10 | 16.0 | 13.1.2* | 17.1.0 | 1.1.0 | 5.14 | 10.3 | 8.6 | 2015 | 9.0 | |
C++14 特性 |
论文 |
GCC |
Clang |
MSVC |
Apple Clang |
EDG eccp |
Intel C++ |
IBM XL C++ |
IBM Open XL C++ for AIX |
IBM Open XL C++ for z/OS |
Sun/Oracle C++ |
Embarcadero C++ Builder |
Cray |
Nvidia HPC C++ (前 PGI)* |
Nvidia nvcc |
[编辑] C++14 库特性
C++14 特性 |
论文 |
GCC libstdc++ |
Clang libc++ |
MSVC STL |
Apple Clang* |
IBM Open XL C/C++ for AIX* |
Sun/Oracle C++* |
Embarcadero C++ Builder* |
|
---|---|---|---|---|---|---|---|---|---|
constexpr 用于 <complex> |
N3302 | 5 | 3.4 | 19.0 (2015)* | 是 | 17.1.0 | 5.15 | 10.3 | |
透明 运算符仿函数 | N3421 | 4.9 | 3.4 | 18.0* | 是 | 17.1.0 | 5.15 | 10.3 | |
std::result_of 和 SFINAE | N3462 | 5 | 是 | 19.0 (更新 2)* | 是 | 17.1.0 | 5.15 | 10.3 | |
constexpr 用于 <chrono> |
N3469 | 5 | 3.4 | 19.0 (2015)* | 是 | 17.1.0 | 5.15 | 10.3 | |
constexpr 用于 <array> |
N3470 | 5 | 3.4 | 19.0 (2015)* | 是 | 17.1.0 | 5.15 | 10.3 | |
constexpr 用于 <initializer_list>,<utility> 和 <tuple> |
N3471 | 5 | 3.4 | 19.0 (2015)* | 是 | 17.1.0 | 5.15 | 10.3 | |
改进的 std::integral_constant | N3545 | 5 | 3.4 | 19.0 (2015)* | 是 | 17.1.0 | 5.15 | 10.3 | |
用户定义字面量 用于 <chrono> 和 <string> | N3642 | 5 | 3.4 | 19.0 (2015)* | 是 | 17.1.0 | 5.15 | 10.3 | |
空前向迭代器 | N3644 | 5 (部分) 10 |
3.4 | 19.0 (2015)* | 是 | 17.1.0 | 5.15 | 10.3 | |
std::quoted | N3654 | 5 | 3.4 | 19.0 (2015)* | 是 | 17.1.0 | 5.15 | 10.3 | |
std::make_unique | N3656 | 4.9 | 3.4 | 18.0* | 是 | 17.1.0 | 5.15 | 10.3 | |
异构关联查找 | N3657 | 5 | 3.4 | 19.0 (2015)* | 是 | 17.1.0 | 5.15 | 10.3 | |
std::integer_sequence | N3658 | 5 | 3.4 | 19.0 (2015)* | 是 | 17.1.0 | 5.15 | 10.3 | |
std::shared_timed_mutex | N3659 | 5 | 3.4 | 19.0 (2015)* | 是 | 17.1.0 | 5.15 | 10.3 | |
std::exchange | N3668 | 5 | 3.4 | 19.0 (2015)* | 是 | 17.1.0 | 5.15 | 10.3 | |
修复没有 const 的 constexpr 成员函数 |
N3669 | 5 | 3.4 | 19.0 (2015)* | 是 | 17.1.0 | 5.15 | 10.3 | |
std::get<T>() | N3670 | 5 | 3.4 | 19.0 (2015)* | 是 | 17.1.0 | 5.15 | 10.3 | |
双范围 std::equal,std::is_permutation,std::mismatch | N3671 | 5 | 3.4 | 19.0 (2015)* | 是 | 17.1.0 | 5.15 | 10.3 | |
C++14 特性 |
论文 |
GCC libstdc++ |
Clang libc++ |
MSVC STL |
Apple Clang* |
IBM Open XL C/C++ for AIX* |
Sun/Oracle C++* |
Embarcadero C++ Builder* |