Namespaces
Variants
Views
Actions

C++14

From cppreference.com
< cpp

C++14 is a minor version after the major version C++11, featuring mainly minor improvements and defect fixes. Its approval was announced on August 18, 2014. It was released on December 15, 2014.

Before its approval, C++1y is sometimes used to indicate its release in 2010s.

Contents

[edit] New language features

[edit] New library features

[edit] Defect reports

Defect Reports fixed in C++14 (276 core, 158 library)

[edit] Compiler support

[edit] C++14 core language features

C++14 feature

 
Paper(s)

 
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++ (ex PGI)*
Nvidia nvcc
Tweaked wording for contextual conversions N3323 4.9 3.4 18.0* Yes 4.9 16.0 13.1.2* 17.1.0 1.1.0 5.15 10.3 8.6 16.1 9.0
Binary literals N3472 4.3 (GNU)
4.9
2.9 19.0 (2015)* Yes 4.10 11.0 13.1.2* 17.1.0 1.1.0 5.14 10.3 8.6 2015 9.0
decltype(auto), Return type deduction for normal functions N3638 4.8 (partial)*
4.9
3.3 (partial)*
3.4
19.0 (2015)* Yes 4.9 15.0 13.1.2* 17.1.0 1.1.0 5.15 10.3 8.6 16.1 9.0
Initialized/Generalized lambda captures (init-capture) N3648 4.5 (partial)
4.9
3.4 19.0 (2015)* Yes 4.10 15.0 16.1.1* 17.1.0 1.1.0 5.15 10.3 8.6 16.1 9.0
Generic lambda expressions N3649 4.9 3.4 19.0 (2015)* Yes 4.10 16.0 13.1.2* 17.1.0 1.1.0 5.15 10.3 8.6 16.1 9.0
Variable templates N3651 5 3.4 19.0 (Update 2)* Yes 4.11 17.0 13.1.2* 17.1.0 1.1.0 5.15 10.3 8.6 17.4 9.0
Extended constexpr N3652 5 3.4 19.10* Yes 4.11 17.0 13.1.2* 17.1.0 1.1.0 5.15 10.3 8.6 17.4 9.0
Aggregates with default member initializers N3653 5 3.3 19.10* Yes 4.9 16.0 16.1.1* 17.1.0 1.1.0 5.14 10.3 8.6 16.1 9.0
Omitting/extending memory allocations N3664 N/A 3.4 N/A Yes N/A N/A N/A 17.1.0 1.1.0 N/A 10.3 8.6 17.4 N/A
[[deprecated]] attribute N3760 4.9 3.4 19.0 (2015)* Yes 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
Sized deallocation N3778 5 3.4 19.0 (2015)* Yes 4.10.1 17.0 16.1.1* 17.1.0 1.1.0 5.14 10.3 8.6 16.1
Single quote as digit separator N3781 4.9 3.4 19.0 (2015)* Yes 4.10 16.0 13.1.2* 17.1.0 1.1.0 5.14 10.3 8.6 2015 9.0
 

C++14 feature
 

Paper(s)
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++ (ex PGI)*
Nvidia nvcc

[edit] C++14 library features

C++14 feature

 
Paper(s)

 
GCC libstdc++
Clang libc++
MSVC STL
Apple Clang*
IBM Open XL C/C++ for AIX*
Sun/Oracle C++*
Embarcadero C++ Builder*
constexpr for <complex> N3302 5 3.4 19.0 (2015)* Yes 17.1.0 5.15 10.3
Transparent operator functors N3421 4.9 3.4 18.0* Yes 17.1.0 5.15 10.3
std::result_of and SFINAE N3462 5 Yes 19.0 (Update 2)* Yes 17.1.0 5.15 10.3
constexpr for <chrono> N3469 5 3.4 19.0 (2015)* Yes 17.1.0 5.15 10.3
constexpr for <array> N3470 5 3.4 19.0 (2015)* Yes 17.1.0 5.15 10.3
constexpr for <initializer_list>, <utility> and <tuple> N3471 5 3.4 19.0 (2015)* Yes 17.1.0 5.15 10.3
Improved std::integral_constant N3545 5 3.4 19.0 (2015)* Yes 17.1.0 5.15 10.3
User-defined literals for <chrono> and <string> N3642 5 3.4 19.0 (2015)* Yes 17.1.0 5.15 10.3
Null forward iterators N3644 5 (partial)
10
3.4 19.0 (2015)* Yes 17.1.0 5.15 10.3
std::quoted N3654 5 3.4 19.0 (2015)* Yes 17.1.0 5.15 10.3
std::make_unique N3656 4.9 3.4 18.0* Yes 17.1.0 5.15 10.3
Heterogeneous associative lookup N3657 5 3.4 19.0 (2015)* Yes 17.1.0 5.15 10.3
std::integer_sequence N3658 5 3.4 19.0 (2015)* Yes 17.1.0 5.15 10.3
std::shared_timed_mutex N3659 5 3.4 19.0 (2015)* Yes 17.1.0 5.15 10.3
std::exchange N3668 5 3.4 19.0 (2015)* Yes 17.1.0 5.15 10.3
fixing constexpr member functions without const N3669 5 3.4 19.0 (2015)* Yes 17.1.0 5.15 10.3
std::get<T>() N3670 5 3.4 19.0 (2015)* Yes 17.1.0 5.15 10.3
Dual-Range std::equal, std::is_permutation, std::mismatch N3671 5 3.4 19.0 (2015)* Yes 17.1.0 5.15 10.3
 

C++14 feature
 

Paper(s)
GCC libstdc++
Clang libc++
MSVC STL
Apple Clang*
IBM Open XL C/C++ for AIX*
Sun/Oracle C++*
Embarcadero C++ Builder*

* - hover over a cell marked with the star * to see additional pop-up notes.
DRnn - the number nn after "DR" denotes target C++ revision the Defect Report is applied to, e.g., DR20 → C++20.

[edit] External links

  Working C++14 examples