C++14
来自cppreference.com
< cpp
C++14 是主要版本 C++11 之后的一个次要版本,主要是一些小的改进和缺陷修复。C++14 于 2014 年 8 月 18 日被通过,于 2014 年 12 月 15 日被发布。
在 C++14 被通过之前,人们有时会使用“C++1y”以表示它会在 21 世纪 10 年代发布。
本节未完成 |
新语言功能特性
新库功能特性
- std::make_unique
- std::shared_timed_mutex 与 std::shared_lock
- std::integer_sequence
- std::exchange
- std::quoted
- 及其他既存库设施的许多小改进,例如
- 某些算法的双范围重载
- 类型特征的类型别名版本
- basic_string、 duration 与 complex 的用户定义字面量
- 等等
本节未完成 |
缺陷报告
编译器支持
主条目: C++14 编译器支持
C++14 核心语言功能特性
C++14 功能特性 |
提案 |
GCC |
Clang |
MSVC |
Apple Clang |
EDG eccp |
Intel C++ |
IBM XLC++ |
Sun/Oracle C++ |
Embarcadero C++ Builder |
Cray |
Nvidia HPC C++ (前 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 (2015)* | 是 | 4.10 | 11.0 | 13.1.2* | 5.14 | 10.3 | 8.6 | 2015 | 9.0 | |
decltype(auto),普通函数的返回类型推导 | N3638 | 4.8 (部分)* 4.9 |
是 | 19.0 (2015)* | 是 | 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 (2015)* | 是 | 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 (2015)* | 是 | 4.10 | 16.0 | 13.1.2* | 5.15 | 10.3 | 8.6 | 16.1 | 9.0 | |
变量模板 | N3651 | 5 | 3.4 | 19.0 (Update 2)* | 是 | 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 | 不适用 | 3.4 | 不适用 | 是 | 不适用 | 不适用 | 不适用 | 不适用 | 10.3 | 8.6 | 17.4 | 不适用 | |
[[deprecated]] 属性
|
N3760 | 4.9 | 3.4 | 19.0 (2015)* | 是 | 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 (2015)* | 是 | 4.10.1 | 17.0 | 16.1.1* | 5.14 | 10.3 | 8.6 | 16.1 | ||
单引号作为数位分隔符 | N3781 | 4.9 | 3.4 | 19.0 (2015)* | 是 | 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 |
Nvidia HPC C++ |
Nvidia nvcc |
C++14 库功能特性
C++14 功能特性 |
提案 |
GCC libstdc++ |
Clang libc++ |
MSVC STL |
Apple Clang |
Sun/Oracle C++ 标准库 |
Embarcadero C++ Builder 标准库 |
Cray C++ 标准库 |
|
---|---|---|---|---|---|---|---|---|---|
<complex> 的 constexpr
|
N3302 | 5 | 3.4 | 19.0 (2015)* | 是 | 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 (Update 2)* | 是 | 5.15 | 10.3 | 8.6 | |
<chrono> 的 constexpr
|
N3469 | 5 | 3.4 | 19.0 (2015)* | 是 | 5.15 | 10.3 | 8.6 | |
<array> 的 constexpr
|
N3470 | 5 | 3.4 | 19.0 (2015)* | 是 | 5.15 | 10.3 | 8.6 | |
<initializer_list> 、 <utility> 和 <tuple> 的 constexpr
|
N3471 | 5 | 3.4 | 19.0 (2015)* | 是 | 5.15 | 10.3 | 8.6 | |
改进的 std::integral_constant | N3545 | 5 | 3.4 | 19.0 (2015)* | 是 | 5.15 | 10.3 | 8.6 | |
<chrono> 和 <string> 的用户定义字面量 | N3642 | 5 | 3.4 | 19.0 (2015)* | 是 | 5.15 | 10.3 | 8.6 | |
空向前迭代器 | N3644 | 5 (部分) | 3.4 | 19.0 (2015)* | 是 | 5.15 | 10.3 | 8.6 | |
std::quoted | N3654 | 5 | 3.4 | 19.0 (2015)* | 是 | 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 (2015)* | 是 | 5.15 | 10.3 | 8.6 | |
std::integer_sequence | N3658 | 5 | 3.4 | 19.0 (2015)* | 是 | 5.15 | 10.3 | 8.6 | |
std::shared_timed_mutex | N3659 | 5 | 3.4 | 19.0 (2015)* | 是 | 5.15 | 10.3 | 8.6 | |
std::exchange | N3668 | 5 | 3.4 | 19.0 (2015)* | 是 | 5.15 | 10.3 | 8.6 | |
修正无 const 的 constexpr 成员函数
|
N3669 | 5 | 3.4 | 19.0 (2015)* | 是 | 5.15 | 10.3 | 8.6 | |
std::get<T>() | N3670 | 5 | 3.4 | 19.0 (2015)* | 是 | 5.15 | 10.3 | 8.6 | |
双范围的 std::equal 、 std::is_permutation 、 std::mismatch | N3671 | 5 | 3.4 | 19.0 (2015)* | 是 | 5.15 | 10.3 | 8.6 | |
C++14 功能特性 |
提案 |
GCC libstdc++ |
Clang libc++ |
MSVC STL |
Apple Clang |
Sun/Oracle C++ 标准库 |
Embarcadero C++ Builder 标准库 |
Cray C++ 标准库 |
* - 在版本号上停留可以查看注记
DRnn - 在 "DR" 后的数字 nn 表示应用该缺陷报告的目标 C++ 修订版本,例如 DR20 → C++20。
外部链接
可运行的 c++14 示例 |