Compiler support for C++14 - cppreference.com (original) (raw)

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

[edit] C++14 core language features

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

[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 | N3302 | 5 | 3.4 | 19.0 (2015)* | Yes | 17.1.0 | 5.15 | 10.3 | | | Transparent operator function objects (FTM)* | N3421 | 4.9 | 3.4 | 18.0* | Yes | 17.1.0 | 5.15 | 10.3 | | | std::result_of and SFINAE (FTM)* | N3462 | 5 | Yes | 19.0 (Update 2)* | Yes | 17.1.0 | 5.15 | 10.3 | | | constexpr for | N3469 | 5 | 3.4 | 19.0 (2015)* | Yes | 17.1.0 | 5.15 | 10.3 | | | constexpr for | N3470 | 5 | 3.4 | 19.0 (2015)* | Yes | 17.1.0 | 5.15 | 10.3 | | | constexpr for <initializer_list>, and | N3471 | 5 | 3.4 | 19.0 (2015)* | Yes | 17.1.0 | 5.15 | 10.3 | | | Improved std::integral_constant (FTM)* | N3545 | 5 | 3.4 | 19.0 (2015)* | Yes | 17.1.0 | 5.15 | 10.3 | | | User-defined literals for and (FTM)* (FTM)* | N3642 | 5 | 3.4 | 19.0 (2015)* | Yes | 17.1.0 | 5.15 | 10.3 | | | Null forward iterators (FTM)* | N3644 | 5 (partial) 10 | 3.4 | 19.0 (2015)* | Yes | 17.1.0 | 5.15 | 10.3 | | | std::quoted (FTM)* | N3654 | 5 | 3.4 | 19.0 (2015)* | Yes | 17.1.0 | 5.15 | 10.3 | | | std::make_unique (FTM)* | N3656 | 4.9 | 3.4 | 18.0* | Yes | 17.1.0 | 5.15 | 10.3 | | | Heterogeneous associative lookup (FTM)* | N3657 | 5 | 3.4 | 19.0 (2015)* | Yes | 17.1.0 | 5.15 | 10.3 | | | std::integer_sequence (FTM)* | 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 (FTM)* | 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 | | | Addressing tuples by type: std::get() (FTM)* | N3670 | 5 | 3.4 | 19.0 (2015)* | Yes | 17.1.0 | 5.15 | 10.3 | | | Dual-Range std::equal, std::is_permutation, std::mismatch (FTM)* | N3671 | 5 | 3.4 | 19.0 (2015)* | Yes | 17.1.0 | 5.15 | 10.3 | | | Alias templates for transformation traits (FTM)* | N3655 | 4.9 | 3.4 | 18.0* | Yes | | | | | | [User-defined Literals for std::complex](../numeric/complex/operator%2522%2522i.html "cpp/numeric/complex/operator""i") (FTM)* | N3779 | 4.9 | 3.4 | 19.0 (2015)* | Yes | | | | | | 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)* | Yes | | | | | | std::tuple_element_t (FTM)* | N3887 | 4.10 | 3.5 | 19.0 (2015)* | Yes | | | | | | 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* | |