Namespaces
Variants

C++14

来自 zh.cppreference.net
< cpp

C++14 是主要版本 C++11 之后的一个次要版本,主要包含次要改进和缺陷修复。其批准公告于 2014 年 8 月 18 日发布。它于 2014 年 12 月 15 日发布。

在批准之前,C++1y 有时用于表示其在 2010 年代发布。

新的语言特性

新的库特性

  • std::make_unique
  • std::shared_timed_mutex 和 std::shared_lock
  • std::integer_sequence
  • std::exchange
  • std::quoted
  • 以及许多对现有库设施的小改进,例如
    • 某些算法的双范围重载
    • 类型特征的别名模板版本
    • 为 basic_string、duration 和 complex 的用户定义字面量
    • 等。

缺陷报告

C++14 中修复的缺陷报告(276 个核心,158 个库)

编译器支持

C++14 核心语言特性

C++14 特性

 
提案

 
GCC
Clang
MSVC
Apple Clang
EDG eccp
Intel C++
Nvidia HPC C++ (原 PGI)*
Nvidia nvcc
Cray
 
Embarcadero C++ Builder
IBM Open XL C++ for AIX
IBM Open XL C++ for z/OS
IBM XL C++
Sun/Oracle C++
上下文转换的调整措辞 N3323 4.9 3.4 18.0* 是 4.9 16.0 16.1 9.0 8.6  10.3 17.1.0 1.1.0 13.1.2* 5.15
二进制字面量  (FTM)* N3472 4.3*
4.9
2.9 19.0 (2015)* 是 4.10 11.0 2015 9.0 8.6  10.3 17.1.0 1.1.0 13.1.2* 5.14
decltype(auto), 普通函数的 返回类型推导 (FTM)*  (FTM)* N3638 4.8 (部分)*
4.9
3.3 (部分)*
3.4
19.0 (2015)* 是 4.9 15.0 16.1 9.0 8.6  10.3 17.1.0 1.1.0 13.1.2* 5.15
初始化/广义 lambda 捕获(init-capture)  (FTM)* N3648 4.5 (部分)
4.9
3.4 19.0 (2015)* 是 4.10 15.0 16.1 9.0 8.6  10.3 17.1.0 1.1.0 16.1.1* 5.15
泛型 lambda 表达式  (FTM)* N3649 4.9 3.4 19.0 (2015)* 是 4.10 16.0 16.1 9.0 8.6  10.3 17.1.0 1.1.0 13.1.2* 5.15
变量模板  (FTM)* N3651 5 3.4 19.0 (Update 2)* 是 4.11 17.0 17.4 9.0 8.6  10.3 17.1.0 1.1.0 13.1.2* 5.15
扩展的 constexpr  (FTM)* N3652 5 3.4 19.10* 是 4.11 17.0 17.4 9.0 8.6  10.3 17.1.0 1.1.0 13.1.2* 5.15
带有默认成员初始化器的聚合体  (FTM)* N3653 5 3.3 19.10* 是 4.9 16.0 16.1 9.0 8.6  10.3 17.1.0 1.1.0 16.1.1* 5.14
省略/扩展 内存分配 N3664 N/A 3.4 N/A 是 N/A N/A 17.4 N/A 8.6  10.3 17.1.0 1.1.0 N/A N/A
[[deprecated]] 属性 N3760 4.9 3.4 19.0 (2015)* 是 4.9 15.0*
16.0
16.1 9.0 8.6  10.3 17.1.0 1.1.0 13.1.2* 5.14
带大小的解分配  (FTM)* N3778 5 3.4 19.0 (2015)* 是 4.10.1 17.0 16.1 8.6  10.3 17.1.0 1.1.0 16.1.1* 5.14
单引号作为数字分隔符 N3781 4.9 3.4 19.0 (2015)* 是 4.10 16.0 2015 9.0 8.6  10.3 17.1.0 1.1.0 13.1.2* 5.14
 

C++14 特性
 

提案
GCC
Clang
MSVC
Apple Clang
EDG eccp
Intel C++
Nvidia HPC C++ (原 PGI)*
Nvidia nvcc
Cray
 
Embarcadero C++ Builder
IBM Open XL C++ for AIX
IBM Open XL C++ for z/OS
IBM XL C++
Sun/Oracle C++

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
透明 运算符函数对象  (FTM)* N3421 4.9 3.4 18.0* 是  17.1.0 5.15 10.3
std::result_of 和 SFINAE  (FTM)* N3462 5 是 19.0 (Update 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  (FTM)* N3545 5 3.4 19.0 (2015)* 是  17.1.0 5.15 10.3
为 <chrono> 和 <string> 的 用户定义字面量 (FTM)* ( FTM)* N3642 5 3.4 19.0 (2015)* 是  17.1.0 5.15 10.3
空前向迭代器  (FTM)* N3644 5 (部分)
10
3.4 19.0 (2015)* 是  17.1.0 5.15 10.3
std::quoted  (FTM)* N3654 5 3.4 19.0 (2015)* 是  17.1.0 5.15 10.3
std::make_unique  (FTM)* N3656 4.9 3.4 18.0* 是  17.1.0 5.15 10.3
异质关联查找  (FTM)* N3657 5 3.4 19.0 (2015)* 是  17.1.0 5.15 10.3
std::integer_sequence  (FTM)* 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  (FTM)* N3668 5 3.4 19.0 (2015)* 是  17.1.0 5.15 10.3
修复 constexpr 不带 const 的成员函数 N3669 5 3.4 19.0 (2015)* 是  17.1.0 5.15 10.3
按类型访问元组:std::get<T>()  (FTM)* N3670 5 3.4 19.0 (2015)* 是  17.1.0 5.15 10.3
双范围 std::equal、std::is_permutation、std::mismatch  (FTM)* N3671 5 3.4 19.0 (2015)* 是  17.1.0 5.15 10.3
转换特征的别名模板  (FTM)* N3655 4.9 3.4 18.0* 是 
用于 std::complex  的用户定义字面量 (FTM)* N3779 4.9 3.4 19.0 (2015)* 是 
DR11: std::is_null_pointer  (FTM)* LWG2247 4.9 3.4 19.0 (2015)*  
std::is_final  (FTM)* LWG2112 5 3.4 19.0 (2015)*  
std::make_reverse_iterator  (FTM)* LWG2285 5 3.4 19.0 (2015)*  
std::shared_timed_mutex  (FTM)* N3891 4.9 3.5 19.0 (2015)* 是 
std::tuple_element_t  (FTM)* N3887 4.10 3.5 19.0 (2015)* 是 
 

C++14 特性
 

提案
GCC libstdc++
Clang libc++
MSVC STL
Apple Clang*
 
IBM Open XL C/C++ for AIX*
Sun/Oracle C++*
Embarcadero C++ Builder*

* - 将鼠标悬停在标有星号 * 的单元格上,可查看额外的弹出注释。
DRnn - “DR”后的数字 nn 表示缺陷报告应用的目标 C++ 修订版本,例如 DR20 → C++20。

外部链接

1.  C++14 - Wikipedia
2.  C++14 工作示例