C++14
Von cppreference.com
< cpp
C++14 ist eine kleine 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 ihrer Genehmigung wurde C++1y manchmal verwendet, um ihre Veröffentlichung in den 2010er Jahren anzuzeigen.
| Dieser Abschnitt ist unvollständig |
Inhalt |
[bearbeiten] Neue Sprachfeatures
- Variablentemplates
- Generische Lambdas
- Lambda Init-Captures
- New/Delete Elision
- Gelockerte Einschränkungen für constexpr-Funktionen
- Binäre Literale
- Zifferntrenner
- Rückgabetyp-Deduktion für Funktionen
- Aggregatklassen mit standardmäßigen nicht-statischen Member-Initialisierern.
[bearbeiten] Neue Bibliotheksfeatures
- std::make_unique
- std::shared_timed_mutex und std::shared_lock
- std::integer_sequence
- std::exchange
- std::quoted
- und viele kleine Verbesserungen an bestehenden Bibliotheksfunktionen, wie z.B.
- Zwei-Bereich-Überladungen für einige Algorithmen
- Typalias-Versionen von Typ-Traits
- Benutzerdefinierte Literale für basic_string, duration und complex
- usw.
| Dieser Abschnitt ist unvollständig |
[bearbeiten] Fehlerberichte
[bearbeiten] Compiler-Unterstützung
[bearbeiten] C++14 Kernsprachen-Features
| C++14 Feature |
Papier(e) |
GCC |
Clang |
MSVC |
Apple Clang |
EDG eccp |
Intel C++ |
Nvidia HPC C++ (ehem. 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++ |
|
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Angepasste Formulierung 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ückgabetyp-Deduktion 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 | |
| Variablentemplates (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 | |
| Erweitertes 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-Member-Initialisierern (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ößenabhängige Deallokation (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 | ||
| Einzelnes 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 Feature |
Papier(e) |
GCC |
Clang |
MSVC |
Apple Clang |
EDG eccp |
Intel C++ |
Nvidia HPC C++ (ehem. 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++ |
[bearbeiten] C++14 Bibliotheksfeatures
| C++14 Feature |
Papier(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 | |
| Verbessertes 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 | |
| Heterogene assoziative Suche (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 | |
| Beheben von constexpr Member-Funktionen 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 Transformations-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 Feature |
Papier(e) |
GCC libstdc++ |
Clang libc++ |
MSVC STL |
Apple Clang* |
IBM Open XL C/C++ for AIX* |
Sun/Oracle C++* |
Embarcadero C++ Builder* |
* - Bewegen Sie den Mauszeiger über eine Zelle, die mit dem Stern markiert ist *, um zusätzliche Pop-up-Hinweise zu sehen.
DRnn - die Nummer nn nach "DR" bezeichnet die Ziel-C++-Revision, auf die der Defect Report angewendet wird, z. B. DR20 → C++20.
[bearbeiten] Externe Links
| 1. | C++14 - Wikipedia |
| 2. | Funktionierende C++14 Beispiele |