C++14
C++14 ist eine kleinere Version nach der Hauptversion C++11, die hauptsächlich kleinere Verbesserungen und Fehlerbehebungen enthält. Ihre Genehmigung wurde am 18. August 2014 bekannt gegeben. Sie wurde am 15. Dezember 2014 veröffentlicht.
Vor seiner Genehmigung wird C++1y manchmal verwendet, um seine Veröffentlichung in den 2010er Jahren anzuzeigen.
| Dieser Abschnitt ist unvollständig |
Inhaltsverzeichnis |
Neue Sprachfunktionen
- Variable Templates
- Generische Lambdas
- Lambda-Init-Capture
- New/Delete-Elision
- Gelockerte Einschränkungen für constexpr-Funktionen
- Binärliterale
- Zifferntrennzeichen
- Rückgabetyp-Deduktion für Funktionen
- Aggregatklassen mit Standard-Initialisierern für nicht-statische Member.
Neue Bibliotheksfunktionen
- std::make_unique
- std::shared_timed_mutex und std::shared_lock
- std::integer_sequence
- std::exchange
- std::quoted
-
sowie viele kleinere Verbesserungen an bestehenden Bibliotheksfunktionen, wie
- Zwei-Bereich-Überladungen für einige Algorithmen
- Typalias-Versionen von Typmerkmalen
- benutzerdefinierte Literale für basic_string , duration und complex
- usw.
| Dieser Abschnitt ist unvollständig |
Fehlerberichte
Compiler-Unterstützung
C++14 Kernsprachfunktionen
|
C++14-Funktion
|
Dokument(e)
|
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++
|
|
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Formulierung angepasst für kontextbezogene Konvertierungen | N3323 | 4.9 | 3.4 | 18.0* | Ja | 4.9 | 16.0 | 16.1 | 9.0 | 8.6 | 10.3 | 17.1.0 | 1.1.0 | 13.1.2* | 5.15 | |
| Binäre Literale ( FTM ) * | N3472 |
4.3*
4.9 |
2.9 | 19.0 (2015)* | Ja | 4.10 | 11.0 | 2015 | 9.0 | 8.6 | 10.3 | 17.1.0 | 1.1.0 | 13.1.2* | 5.14 | |
| decltype(auto) , Rückgabetypableitung für normale Funktionen ( FTM ) * ( FTM ) * | N3638 |
4.8
(teilweise)*
4.9 |
3.3
(teilweise)*
3.4 |
19.0 (2015)* | Ja | 4.9 | 15.0 | 16.1 | 9.0 | 8.6 | 10.3 | 17.1.0 | 1.1.0 | 13.1.2* | 5.15 | |
| Initialisierte/Generalisierte Lambda-Captures (Init-Capture) ( FTM ) * | N3648 |
4.5 (teilweise)
4.9 |
3.4 | 19.0 (2015)* | Ja | 4.10 | 15.0 | 16.1 | 9.0 | 8.6 | 10.3 | 17.1.0 | 1.1.0 | 16.1.1* | 5.15 | |
| Generische Lambda-Ausdrücke ( FTM ) * | N3649 | 4.9 | 3.4 | 19.0 (2015)* | Ja | 4.10 | 16.0 | 16.1 | 9.0 | 8.6 | 10.3 | 17.1.0 | 1.1.0 | 13.1.2* | 5.15 | |
| Variablen-Templates ( FTM ) * | N3651 | 5 | 3.4 | 19.0 (Update 2)* | Ja | 4.11 | 17.0 | 17.4 | 9.0 | 8.6 | 10.3 | 17.1.0 | 1.1.0 | 13.1.2* | 5.15 | |
| Erweiterte constexpr ( FTM ) * | N3652 | 5 | 3.4 | 19.10* | Ja | 4.11 | 17.0 | 17.4 | 9.0 | 8.6 | 10.3 | 17.1.0 | 1.1.0 | 13.1.2* | 5.15 | |
| Aggregate mit Standard-Memberinitialisierern ( FTM ) * | N3653 | 5 | 3.3 | 19.10* | Ja | 4.9 | 16.0 | 16.1 | 9.0 | 8.6 | 10.3 | 17.1.0 | 1.1.0 | 16.1.1* | 5.14 | |
| Auslassen/Erweitern von Speicherallokationen | N3664 | N/A | 3.4 | N/A | Ja | N/A | N/A | 17.4 | N/A | 8.6 | 10.3 | 17.1.0 | 1.1.0 | N/A | N/A | |
[[
deprecated
]]
Attribut
|
N3760 | 4.9 | 3.4 | 19.0 (2015)* | Ja | 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 | |
| Größenbasierte Freigabe ( FTM ) * | N3778 | 5 | 3.4 | 19.0 (2015)* | Ja | 4.10.1 | 17.0 | 16.1 | 8.6 | 10.3 | 17.1.0 | 1.1.0 | 16.1.1* | 5.14 | ||
| Einfaches Anführungszeichen als Zifferntrenner | N3781 | 4.9 | 3.4 | 19.0 (2015)* | Ja | 4.10 | 16.0 | 2015 | 9.0 | 8.6 | 10.3 | 17.1.0 | 1.1.0 | 13.1.2* | 5.14 | |
|
C++14-Funktion |
Papier(e) |
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++
|
C++14-Bibliotheksfunktionen
|
C++14-Funktionalität
|
Dokument(e)
|
GCC libstdc++
|
Clang libc++
|
MSVC STL
|
Apple Clang*
|
IBM Open XL C/C++ for AIX*
|
Sun/Oracle C++*
|
Embarcadero C++ Builder*
|
|
|---|---|---|---|---|---|---|---|---|---|
| constexpr für <complex> | N3302 | 5 | 3.4 | 19.0 (2015)* | Ja | 17.1.0 | 5.15 | 10.3 | |
| Transparente Operator-Funktionsobjekte ( FTM ) * | N3421 | 4.9 | 3.4 | 18.0* | Ja | 17.1.0 | 5.15 | 10.3 | |
| std::result_of und SFINAE ( FTM ) * | N3462 | 5 | Ja | 19.0 (Update 2)* | Ja | 17.1.0 | 5.15 | 10.3 | |
| constexpr für <chrono> | N3469 | 5 | 3.4 | 19.0 (2015)* | Ja | 17.1.0 | 5.15 | 10.3 | |
| constexpr für <array> | N3470 | 5 | 3.4 | 19.0 (2015)* | Ja | 17.1.0 | 5.15 | 10.3 | |
| constexpr für <initializer_list> , <utility> und <tuple> | N3471 | 5 | 3.4 | 19.0 (2015)* | Ja | 17.1.0 | 5.15 | 10.3 | |
| Verbesserte std::integral_constant ( FTM ) * | N3545 | 5 | 3.4 | 19.0 (2015)* | Ja | 17.1.0 | 5.15 | 10.3 | |
| Benutzerdefinierte Literale für <chrono> und <string> ( FTM ) * ( FTM ) * | N3642 | 5 | 3.4 | 19.0 (2015)* | Ja | 17.1.0 | 5.15 | 10.3 | |
| Null-Forward-Iteratoren ( FTM ) * | N3644 |
5 (teilweise)
10 |
3.4 | 19.0 (2015)* | Ja | 17.1.0 | 5.15 | 10.3 | |
| std::quoted ( FTM ) * | N3654 | 5 | 3.4 | 19.0 (2015)* | Ja | 17.1.0 | 5.15 | 10.3 | |
| std::make_unique ( FTM ) * | N3656 | 4.9 | 3.4 | 18.0* | Ja | 17.1.0 | 5.15 | 10.3 | |
| Heterogener assoziativer Zugriff ( FTM ) * | N3657 | 5 | 3.4 | 19.0 (2015)* | Ja | 17.1.0 | 5.15 | 10.3 | |
| std::integer_sequence ( FTM ) * | N3658 | 5 | 3.4 | 19.0 (2015)* | Ja | 17.1.0 | 5.15 | 10.3 | |
| std::shared_timed_mutex | N3659 | 5 | 3.4 | 19.0 (2015)* | Ja | 17.1.0 | 5.15 | 10.3 | |
| std::exchange ( FTM ) * | N3668 | 5 | 3.4 | 19.0 (2015)* | Ja | 17.1.0 | 5.15 | 10.3 | |
| Korrektur von constexpr Memberfunktionen ohne const | N3669 | 5 | 3.4 | 19.0 (2015)* | Ja | 17.1.0 | 5.15 | 10.3 | |
| Adressierung von Tupeln nach Typ: std::get<T>() ( FTM ) * | N3670 | 5 | 3.4 | 19.0 (2015)* | Ja | 17.1.0 | 5.15 | 10.3 | |
| Dual-Range std::equal , std::is_permutation , std::mismatch ( FTM ) * | N3671 | 5 | 3.4 | 19.0 (2015)* | Ja | 17.1.0 | 5.15 | 10.3 | |
| Alias-Templates für Transformation Traits ( FTM ) * | N3655 | 4.9 | 3.4 | 18.0* | Ja | ||||
Benutzerdefinierte Literale für
std::complex
(
FTM
)
*
|
N3779 | 4.9 | 3.4 | 19.0 (2015)* | Ja | ||||
| 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)* | Ja | ||||
| std::tuple_element_t ( FTM ) * | N3887 | 4.10 | 3.5 | 19.0 (2015)* | Ja | ||||
|
C++14-Funktion |
Papier(e) |
GCC libstdc++
|
Clang libc++
|
MSVC STL
|
Apple Clang*
|
IBM Open XL C/C++ for AIX*
|
Sun/Oracle C++*
|
Embarcadero C++ Builder*
|
*
- fahren Sie mit der Maus über eine mit dem Stern markierte Zelle
*
, um zusätzliche Pop-up-Hinweise zu sehen.
DR
nn
- die Zahl
nn
nach "DR" bezeichnet die C++-Revision, auf die der Defect Report angewendet wird, z.B. DR20 → C++20.
Externe Links
| 1. | C++14 - Wikipedia |
| 2. | Funktionsfähige C++14-Beispiele |