Namespaces
Variants

C++17

From cppreference.net

C++17 ist eine Hauptversion, die der Nebenversion C++14 folgt und neue Sprach- und Bibliotheksfunktionen einführt. Der Standard wurde im Dezember 2017 veröffentlicht.

Die folgenden Funktionen wurden in C++17 zusammengeführt:

Inhaltsverzeichnis

Veraltete Funktionen

Entfernte Funktionen
Veraltete Funktionen

Neue Sprachfunktionen

Neue Header

Neue Bibliotheksfunktionen

Hilfstypen

Speicherverwaltung

Compile-Zeit-Programmierung

Algorithmen

Iteratoren und Container

Numerik

Andere

Fehlerberichte

Behobene Fehlermeldungen in C++17 (290 Core, 363 Bibliothek)

Compiler-Unterstützung

C++17 Kernsprachfunktionen

**Übersetzte Elemente:** - "with no message" → "ohne Nachricht" - "Feature-testing macro" → "Feature-Test-Makro" - "Yes" → "Ja" **Beibehaltene Elemente:** - Alle HTML-Tags und Attribute - `static_assert` (C++-spezifischer Begriff) - FTM (Abkürzung) - __cpp_static_assert (Makroname) - Alle numerischen Werte und Versionsnummern - N3928 (Dokumentenreferenz) **Übersetzte Elemente:** - "character literals" → "Zeichenliterale" - "Yes" → "Ja" **Nicht übersetzte Elemente:** - HTML-Tags und Attribute bleiben unverändert - ` `-Inhalt "u8" bleibt unverändert - Technische Bezeichnungen (N4267, Versionsnummern) bleiben unverändert - C++-spezifische Begriffe bleiben unverändert **Übersetzte Elemente:** - "lambda expressions" → "Lambda-Ausdrücke" - "Feature-testing macro" → "Feature-Test-Makro" - "Yes" → "Ja" **Nicht übersetzte Elemente:** - HTML-Tags und Attribute - ` `-Inhalt ("constexpr") - Technische Begriffe (FTM, P0170R1) - Versionsnummern und Werte - Tooltip-Titel (cpp/language/lambda, cpp/feature test) **Übersetzungsdetails:** - "Inline variables" → "Inline-Variablen" (C++-Begriff bleibt erhalten, nur grammatikalische Anpassung) - "Feature-testing macro" → "Feature-Test-Makro" - "Yes" → "Ja" - HTML-Tags, Attribute und numerische Werte bleiben unverändert - FTM (Feature Testing Macro) als Abkürzung bleibt erhalten - P0386R2 (C++-Standarddokument) bleibt unübersetzt
C++17-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
DR11: Neue auto Regeln für Direct-List-Initialization N3922 5 3.8 19.0 (2015)* Ja 4.10.1 17.0 17.7 11.0 11.0 10.3 17.1.0
typename in einer Template-Template-Parameter N4051 5 3.5 19.0 (2015)* Ja 4.10.1 17.0 17.7 Ja* 11.0 10.3 17.1.0
Entfernung von trigraphs N4086 5 3.5 16.0* Ja 5.0 19.1 11.0 11.0 10.3 17.1.0
Verschachtelte Namespace Definition N4230 6 3.6 19.0 (Update 3)* Ja 4.12 17.0 17.7 11.0 11.0 10.3 17.1.0
static_assert ohne Nachricht  ( FTM ) * N3928 6 2.5 19.10* Ja 4.12 18.0 17.7 11.0 11.0 10.3 17.1.0
Attribute für Namespaces und Enumeratoren  ( FTM ) * ( FTM ) * N4266 4.9 (teilweise)*
6
3.6 19.0 (2015)* Ja 4.11 17.0 17.7 11.0 11.0 10.3 17.1.0
u8 Zeichenliterale N4267 6 3.6 19.0 (2015)* Ja 4.11 17.0 17.7 11.0 11.0 10.3 17.1.0
Erlaubt konstante Auswertung für alle konstanten Template-Argumente  ( FTM ) * N4268 6 3.6 19.12* Ja 5.0 19.0.1 19.1 11.0 11.0 10.3 17.1.0
Unäre Fold-Ausdrücke und leere Parameterpacks P0036R0 6 3.9 19.12* Ja 4.14 19.0 19.1 11.0 11.0 10.3 17.1.0
Entfernung der veralteten Verwendung des register Schlüsselworts P0001R1 7 3.8 19.11* Ja 4.13 18.0 17.7 11.0 11.0 10.3 17.1.0
Veralteten Operator entfernen operator ++ ( bool ) P0002R1 7 3.8 19.11* Ja 4.13 18.0 17.7 11.0 11.0 10.3 17.1.0
Machen Sie Ausnahmespezifikationen Teil des Typsystems  ( FTM ) * P0012R1 7 4 19.12* Ja 4.14 19.0 19.1 11.0 11.0 10.3 17.1.0
__has_include in Präprozessor-Bedingungen P0061R1 5 Ja 19.11* Ja 4.13 18.0 17.7 11.0 11.0 10.3 17.1.0
DR11: Neue Spezifikation für vererbende Konstruktoren ( DR1941 et al)  ( FTM ) * P0136R1 7 3.9 19.14* * Ja 6.1 19.1 11.0 11.0 10.3 17.1.0
Aggregate-Klassen mit Basisklassen  ( FTM ) * P0017R1 7 3.9 19.14* Ja 5.0 19.0.1 19.1 11.0 11.0 10.3 17.1.0
Fold-Ausdrücke ( FTM ) * N4295 6 3.6 19.12* Ja 4.14 19.0 18.1 11.0 11.0 10.3 17.1.0
Lambda-Erfassung von * this ( FTM ) * P0018R3 7 3.9 19.11* Ja 4.14 19.0 18.1 11.0 11.0 10.3 17.1.0
Direkte Listeninitialisierung von Enumerationen P0138R2 7 3.9 19.11* Ja 4.14 18.0 19.1 11.0 11.0 10.3 17.1.0
constexpr Lambda-Ausdrücke ( FTM ) * P0170R1 7 5 19.11* Ja 4.14 19.0 18.1 11.0 11.0 10.3 17.1.0
Unterschiedliche begin- und end-Typen in bereichsbasierter for-Schleife ( FTM ) * P0184R0 6 3.9 19.10* Ja 4.12 18.0 17.7 11.0 11.0 10.3 17.1.0
[[ fallthrough ]] Attribut P0188R1 7 3.9 19.10* Ja 4.13 18.0 17.7 11.0 11.0 10.3 17.1.0
[[ nodiscard ]] Attribut P0189R1 7 3.9 19.11* Ja 4.13 18.0 17.7 11.0 11.0 10.3 17.1.0
[[ maybe_unused ]] Attribut P0212R1 7 3.9 19.11* Ja 4.13 18.0 17.7 11.0 11.0 10.3 17.1.0
Hexadezimale Gleitkomma-Literale ( FTM ) * P0245R1 3.0 Ja 19.11* Ja 4.13 18.0 17.7 11.0 11.0 10.3 17.1.0
Verwendung von Attribut-Namespaces ohne Wiederholung P0028R4 7 3.9 19.11* Ja 4.13 18.0 17.7 11.0 11.0 10.3 17.1.0
Dynamische Speicherallokation für überausgerichtete Daten  ( FTM ) * P0035R4 7 4 19.12* 10.0.0* 4.14 19.0 19.1 11.0 11.0 10.3 17.1.0
Konstante Template-Parameter mit auto -Typ  ( FTM ) * P0127R2 7 4 19.14* Ja 5.0 19.0.1 19.1 11.0 11.0 10.3 17.1.0
Garantierte copy elision ( FTM ) * P0135R1 7 4 19.13* Ja 5.0 19.0.1 19.1 11.0 11.0 10.3 17.1.0
Ersetzung von Klassenobjekten mit Referenzmitgliedern P0137R1 7 6 19.14* Ja 5.0 19.1 11.0 11.0 10.3 17.1.0
Strengere Ausdrucksauswertungsreihenfolge P0145R3 7 4 19.14* Ja 5.0 19.0.1 19.1 11.0 11.0 10.3 17.1.0
Strukturierte Bindungen ( FTM ) * P0217R3 7 4 19.11* Ja 4.14 19.0 18.1 11.0* 11.0 10.3 17.1.0
Unbekannte Attribute ignorieren attributes P0283R2 Ja 3.9 19.0 (2015)* Ja 4.13 18.0 17.7 11.0 11.0 10.3 17.1.0
constexpr-if Anweisungen  ( FTM ) * P0292R2 7 3.9 19.11* Ja 4.14 19.0 18.1 11.0 11.0 10.3 17.1.0
Init-Anweisungen für if und switch P0305R1 7 3.9 19.11* Ja 4.14 18.0 18.1 11.0 11.0 10.3 17.1.0
Inline-Variablen ( FTM ) * P0386R2 7 3.9 19.12* Ja 4.14 19.0 18.1 11.0 11.0 10.3 17.1.0
Entfernung von dynamischen Exception-Spezifikationen P0003R5 7 4 19.12* Ja 4.14 19.0 19.1 11.0 11.0 10.3 17.1.0
Pack-Erweiterungen in using-Deklarationen  ( FTM ) * P0195R2 7 4 19.14* Ja 5.0 19.0 19.1 11.0 11.0 10.3 17.1.0
DR98: Abgleich von Template-Template-Argumenten schließt kompatible Templates aus  ( FTM ) * P0522R0 7 4 19.12* Ja 5.0 19.0.1 19.1 11.0 11.0 10.3 17.1.0
Klassentemplate-Argumentdeduktion ( FTM ) * P0091R3 7 5 19.14* Ja 5.0 19.0.1 19.1 11.0 11.0 10.3 17.1.0


C++17-Funktionalität


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

C++17-Bibliotheksfunktionen

**Übersetzte Elemente:** - "Yes" → "Ja" (in der entsprechenden Tabellenzelle) - "N/A" → "N/V" (Nicht verfügbar) **Beibehaltene Elemente:** - Alle HTML-Tags und Attribute - `std::void_t`, `FTM`, `N3911` und andere C++-spezifische Begriffe - Zahlenwerte und Versionsnummern - Link-URLs und Titelattribute - Formatierung und Struktur **Übersetzte Änderungen:** - "and" → "und" - "Yes" → "Ja" Alle HTML-Tags, Attribute, C++-Funktionsnamen (`std::size()`, `std::empty()`, `std::data()`), Makronamen und technische Bezeichnungen wurden unverändert belassen. **Änderungen:** - "Yes" → "Ja" (deutsche Übersetzung für "Yes") - "N/A" → "N/V" (deutsche Abkürzung für "Nicht Verfügbar") **Beibehalten:** - Alle HTML-Tags und Attribute - C++-spezifische Begriffe (`std::invoke`, `FTM`, `__cpp_lib_invoke`) - Zahlenwerte und Versionsnummern - Link-URLs und technische Bezeichnungen **Übersetzte Elemente:** - "Yes" → "Ja" (in der Spalte für GCC) - "N/A" → "N/V" (Nicht Verfügbar/Vorhanden) **Beibehaltene Elemente:** - Alle HTML-Tags und Attribute - C++-spezifische Begriffe (`std::map::try_emplace`, `std::map::insert_or_assign`, `FTM`, `__cpp_lib_map_try_emplace`) - Code-ähnliche Elemente (Versionsnummern, Dokumentenreferenzen) - Formatierung und Struktur **Änderungen:** - "Yes" → "Ja" (deutsche Übersetzung für "Yes") - "N/A" → "N/V" (deutsche Abkürzung für "Nicht Verfügbar") **Hinweise:** - Alle HTML-Tags und Attribute wurden unverändert beibehalten - C++-spezifische Begriffe wie `std::unordered_map::try_emplace` und `__cpp_lib_unordered_map_try_emplace` wurden nicht übersetzt - Die Formatierung und Struktur der Tabelle bleibt vollständig erhalten - Der Titel-Tooltip "Feature-testing macro" wurde nicht übersetzt, da er als technischer Begriff betrachtet wird **Übersetzte Textelemente:** - "(untimed)" → "(ungetimed)" - "Yes" → "Ja" - "N/A" → "N/V" (Nicht Verfügbar) **Beibehaltene Elemente:** - Alle HTML-Tags und Attribute - `std::shared_mutex`, `FTM`, `__cpp_lib_shared_mutex` und andere C++-spezifische Begriffe - Zahlenwerte und Versionsnummern - Link-Texte und Titelattribute **Übersetzungshinweise:** - "Logical operator type traits" wurde als "Logische Operatoren-Typ-Traits" übersetzt - "Yes" wurde als "Ja" übersetzt - HTML-Tags, Attribute und technische Bezeichnungen (FTM, P0013R1, N/A) wurden unverändert belassen - Versionsnummern und technische Werte wurden nicht übersetzt - Der Tooltip-Text im title-Attribut wurde aufgrund der Anweisung nicht übersetzt **Übersetzte Textteile:** - "Transparent" → "Transparente" - "Yes" → "Ja" **Beibehaltene Elemente:** - Alle HTML-Tags und Attribute - C++-spezifische Begriffe (`std::owner_less`, `std::owner_less `, `FTM`, `__cpp_lib_transparent_operators`) - Code-ähnliche Elemente (Versionsnummern, P0074R0, N/A) - Formatierung und Struktur **Übersetzte Textstellen:** - "Parallel algorithms and" → "Parallele Algorithmen und" - "execution policies" → "Ausführungsrichtlinien" - "(partial)" → "(teilweise)" **Beibehaltene Elemente:** - Alle HTML-Tags und Attribute - C++-spezifische Begriffe (FTM, Makro-Namen) - Numerische Werte und Codes - Tooltip-Texte in title-Attributen - Formatierung und Struktur **Anmerkung:** In diesem HTML-Fragment gibt es keine zu übersetzenden Textelemente, da: - `std::clamp()` ein C++-spezifischer Begriff ist - `FTM` ein Akronym für "Feature Testing Macro" bleibt - `P0025R1` ein ISO-Dokumentenbezeichner ist - Versionsnummern und technische Bezeichner unverändert bleiben - Der Titel-Attributtext in ` ` als Code/Makro-Definition erhalten bleibt **Änderungen:** - "Yes" → "Ja" (deutsche Übersetzung für "Yes") - "N/A" → "N/V" (deutsche Abkürzung für "Nicht Verfügbar" - entspricht "Not Available") - Alle HTML-Tags, Attribute, C++-spezifischen Begriffe und Code-Elemente wurden unverändert beibehalten **Änderungen:** - "Yes" wurde zu "Ja" übersetzt - "N/A" (Not Applicable) wurde zu "N/V" (Nicht Verfügbar) übersetzt - Alle HTML-Tags, Attribute und C++-spezifische Begriffe (`std::byte`, `FTM`, `__cpp_lib_byte`, etc.) wurden beibehalten - Die Formatierung und Struktur des HTML-Codes wurde vollständig erhalten **Übersetzte Elemente:** - "partial" → "teilweise" (im Kontext von teilweiser Implementierung) - "N/A" → "N/V" (Nicht Verfügbar) **Beibehaltene Elemente:** - Alle HTML-Tags und Attribute - `std::string_view`, FTM und andere C++-spezifische Begriffe - Versionsnummern und technische Bezeichnungen - Link-Texte (N3921, P0220R1, etc.) - Der Titel-Attribut-Text bleibt unverändert **Anmerkung:** Da der Text keine übersetzbaren Inhalte außerhalb der HTML-Tags enthält und gemäß den Anweisungen HTML-Tags, Attribute, Code-Bereiche und C++-spezifische Begriffe nicht übersetzt werden sollen, bleibt der ursprüngliche Text unverändert. Die einzigen potenziell übersetzbaren Elemente (wie "N/A") sind technische Abkürzungen, die international standardisiert sind. **Anmerkung:** In diesem HTML-Fragment gibt es keine zu übersetzenden Textelemente, da: - Alle sichtbaren Texte entweder C++-spezifische Begriffe (`std::optional`, `FTM`, `P0220R1`) sind - Oder es sich um Versionsnummern und technische Bezeichnungen handelt - Oder der Text innerhalb von HTML-Attributen (title-Attributen) liegt, die laut Anforderung nicht übersetzt werden sollen Die einzigen potenziell übersetzbaren Elemente wären die `title`-Attribute, diese wurden jedoch gemäß den Anweisungen nicht übersetzt. **Änderungen:** - "and" wurde zu "und" übersetzt - Alle HTML-Tags, Attribute und C++-spezifischen Begriffe (Maps, Sets, FTM, N/A) wurden beibehalten - Die Formatierung und Struktur des HTML-Codes bleibt unverändert **Übersetzte Elemente:** - "and" → "und" - "Feature-testing macro" → "Feature-Test-Makro" - "Yes" → "Ja" **Beibehaltene Elemente:** - Alle HTML-Tags und Attribute - `std::gcd()`, `std::lcm()` (C++-spezifische Begriffe) - FTM (Abkürzung) - __cpp_lib_gcd_lcm (Makroname) - Alle numerischen Werte und Versionsnummern - N/A (Abkürzung) **Änderungen:** - "Yes" → "Ja" (deutsche Übersetzung für "Yes") - "N/A" → "N/V" (deutsche Abkürzung für "Nicht Verfügbar" - entspricht "Not Available") - Alle HTML-Tags, Attribute, C++-spezifischen Begriffe (`std::is_aggregate`, `FTM`, `LWG2911`, etc.) und Zahlenwerte wurden beibehalten - Der Tooltip-Text im `title`-Attribut wurde nicht übersetzt, da er als Code/Makro betrachtet werden kann **Anmerkung:** In diesem HTML-Fragment gibt es keine zu übersetzenden Textelemente außerhalb der geschützten Tags. Die einzigen Textelemente sind: - `DR17` (Abkürzung/Code, nicht zu übersetzen) - `std::hash ` (innerhalb von ` ` Tags, nicht zu übersetzen) - `LWG3657` (Code-Referenz, nicht zu übersetzen) - Versionsnummern (11.4, 17, 19.32*) - numerische Werte werden nicht übersetzt - `N/A` (Abkürzung für "Not Applicable", standardmäßig im technischen Kontext beibehalten) Daher bleibt das gesamte Fragment unverändert.
C++17-Funktionalität

Paper(s)

GCC libstdc++
Clang libc++
MSVC STL
Apple Clang*
IBM Open XL C/C++ for AIX*
Intel Parallel STL
Embarcadero C++ Builder*
std::void_t ( FTM ) * N3911 6.1 3.6 19.0 (2015)* Ja 17.1.0 N/V 10.3
std::uncaught_exceptions() ( FTM ) * N4259 6.1 3.7 19.0 (2015)* Ja 17.1.0 N/V 10.3
std::size() , std::empty() und std::data() ( FTM ) * N4280 6 3.6 19.0 (2015)* Ja 17.1.0 N/A 10.3
std::allocator_traits::is_always_equal , noexcept Bereinigungen  ( FTM ) * N4258 6.1 3.7 19.0 (2015)* 17.1.0 N/A
std::invoke ( FTM ) * N4169 6.1 3.7 19.0 (2015)* Ja 17.1.0 N/V
std::map::try_emplace , std::map::insert_or_assign ( FTM ) * N4279 6.1 3.7 19.0 (2015)* Ja 17.1.0 N/V
std::unordered_map::try_emplace , std::unordered_map::insert_or_assign ( FTM ) * N4279 6.1 3.7 19.0 (2015)* Ja 17.1.0 N/V
Verbesserung von std::pair und std::tuple N4387 6.1 4 19.0 (Update 2)* Ja 17.1.0 N/A 10.3
std::bool_constant ( FTM ) * N4389 6.1 3.7 19.0 (2015)* Ja 17.1.0 N/V 10.3
std::shared_mutex (ungetimed)  ( FTM ) * N4508 6 3.7 19.0 (Update 2)* Ja 17.1.0 N/V 10.3
Minimale Unterstützung für unvollständige Typen für std::forward_list , std::list und std::vector ( FTM ) * N4510 3.0 3.6 18.0* Ja 17.1.0 N/A
Typ-Traits Variablen-Templates  ( FTM ) * P0006R0 7.1 3.8 19.0 (Update 2)* Ja 17.1.0 N/A 10.3
Logische Operatoren-Typ-Traits ( FTM ) * P0013R1 6.1 3.8 19.0 (Update 2)* Ja 17.1.0 N/A 10.3
std::as_const ( FTM ) * P0007R1 7.1 3.8 19.0 (Update 2)* Ja 17.1.0 N/A
Rundungsfunktionen für std::chrono::duration und std::chrono::time_point ( FTM ) * P0092R1 7.1 3.8 19.0 (Update 2)* Ja 17.1.0 N/A
Transparente std::owner_less ( std::owner_less<void> )  ( FTM ) * P0074R0 7.1 3.8 19.0 (Update 2)* Ja 17.1.0 N/A
std::not_fn ( FTM ) * P0005R4
P0358R1
7.1 3.9 19.12* Ja 17.1.0 N/A 10.3
Parallele Algorithmen und Ausführungsrichtlinien ( FTM ) * ( FTM ) * P0024R2 9* 17
(teilweise)*
19.14* 18.0*
std::clamp() ( FTM ) * P0025R1 7 3.9 19.0 (Update 3)* 10.0.0* 17.1.0 N/A 10.3
(nothrow-)swappable Eigenschaften ( FTM ) * P0185R1 7.1* 3.9 19.0 (Update 3)* 10.0.0* 17.1.0 N/A 10.3
Polymorphe Speicherressourcen ( FTM ) * P0220R1 9.1 16 19.13* 15.0.0* 17.1.1 N/A 10.3
std::apply ( FTM ) * P0220R1 7.1 16 19.13* Ja 17.1.0 Nicht verfügbar
Searcher ( FTM ) * P0220R1 7.1 16 19.13* Ja 17.1.0 N/V
std::sample ( FTM ) * P0220R1 7.1 16 19.13* Ja 17.1.0 N/V
Mathematische Sonderfunktionen ( FTM ) * P0226R1 7 19.14* 17.1.1 N/A 10.3
constexpr std::addressof ( FTM ) * LWG2296 7.1 Ja 19.0 (Update 3)* 17.1.0 N/A
constexpr für std::reverse_iterator , std::move_iterator , std::array und Bereichszugriff ( FTM ) * P0031R0 7.1 4 19.11* Ja 17.1.0 N/A
constexpr std:: atomic < T > :: is_always_lock_free ( FTM ) * P0152R1 7.1 3.9 19.11* Ja 17.1.0 N/V
std::enable_shared_from_this::weak_from_this ( FTM ) * P0033R1 7.1 3.9 19.12* Ja 17.1.0 N/V
3-Argument-Überladung von std::hypot ( FTM ) * P0030R1 7.1 3.9 19.14* Ja 17.1.0 N/A
std::byte ( FTM ) * P0298R3 7 5 19.11* Ja 17.1.1 N/V 10.3
std::string_view ( FTM ) * N3921
P0220R1
P0254R2
P0403R1
7.1 4 19.10* (teilweise)*
19.11* *
10.0.0* 17.1.0 N/V 10.3
std::any ( FTM ) * P0220R1
P0032R3
7.1 4 19.10* 10.0.0* 17.1.0 N/A 10.3
std::optional ( FTM ) * P0220R1 7.1 4 19.10* 10.0.0* 17.1.0 N/A 10.3
Hauptteil der C11-Standardbibliothek P0063R3 9.1 7 19.0 (2015)*
(teilweise)*
10.0.0* 17.1.1 N/A
Splicing Maps und Sets ( FTM ) * P0083R3 7 8 19.12* 10.0.0* 17.1.1 N/A
Rückgabetyp der emplace *-Funktionen einiger Container wurde von void auf Referenz geändert P0084R2 7.1 4.0 19.11* Ja 17.1.0 N/A
std::variant ( FTM ) * P0088R3 7.1 4 19.10* 10.0.0* 17.1.0 N/A 10.3
std::make_from_tuple() ( FTM ) * P0209R2 7.1 3.9 19.10* Ja 17.1.0 N/V 10.3
std::has_unique_object_representations ( FTM ) * P0258R2 7.1 6 19.11* Ja 17.1.1 N/V 10.3
std::gcd() und std::lcm() ( FTM ) * P0295R0 7 4 19.11* Ja 17.1.0 N/A 10.3
CWG Issue 1776 : Ersetzung von Klassenobjekten mit Referenzmembern ( std::launder )  ( FTM ) * P0137R1 7.1 6 19.14* Ja 17.1.0 N/A
Erweiterung der Speicherverwaltungswerkzeuge ( FTM ) * P0040R3 7.1 4 19.11* 17.1.0 N/A
shared_ptr::weak_type ( FTM ) * P0163R0 7.1 3.9 19.10* Ja 17.1.0 N/V
Elementare Zeichenkettenumwandlungen : std:: to_chars / std:: from_chars ( FTM ) * P0067R5 8*
11
7*
14*
20*
19.14* *
19.24*
10.0.0* * 17.1.1* N/A 10.3*
std::shared_ptr und std::weak_ptr mit Array-Unterstützung P0414R2 7 11 19.12* 12.0.0* 17.1.1 N/A 10.3
Constexpr für alle Memberfunktionen von std::chrono::duration und std::chrono::time_point ( FTM ) * P0505R0 7.1 4 19.11* Ja 17.1.1 N/A
std:: shared_ptr < T [ ] > ( FTM ) * P0497R0 7.1 11 19.12* 17.1.1 N/A
constexpr std::char_traits ( FTM ) * P0426R1 8.1 4 19.14* Ja 17.1.1 N/V
Dateisystem-Bibliothek ( std::filesystem )  ( FTM ) * P0218R1
P0219R1
8 7 19.14* 11.0.0* 17.1.1 N/A 10.3
Hardware-Interferenzgröße ( FTM ) * P0154R1 12.1 15 (teilweise)*
19
19.11* N/A 10.3
std::scoped_lock ( FTM ) * P0156R2 7 5 19.11* Ja 17.1.1 N/V 10.3
std::is_aggregate ( FTM ) * LWG2911 7 5 19.15* Ja 17.1.1 N/V 10.3
std::is_invocable , std::invoke_result ( FTM ) * P0604R0 7.1 Ja 19.11* Ja 17.1.1 N/A
DR17: std::hash<std::filesystem::path> LWG3657 11.4 17 19.32* N/A


C++17-Funktionalität


Paper(s)
GCC libstdc++
Clang libc++
MSVC STL
Apple Clang*
IBM Open XL C/C++ for AIX*
Intel Parallel STL
Embarcadero C++ Builder*
Hinweise
  • Stand 20. November 2020 ist die neueste Version von Oracle Developer Studio 12.6 . Dessen Dokumentation erwähnt C++17 nicht.
  • Der Cray-Compiler könnte Unterstützung für einige Funktionen bereits vor Version 11.0 bieten. Diese Version markiert den Zeitpunkt, zu der er zu einem Ableger von Clang wurde und dabei die gesamte Sprachfunktionsunterstützung des Basiscompilers übernahm. Siehe Cray/HPE-Dokument S-2179 .

* - 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 Defektbericht angewendet wird, z.B. DR20 → C++20.

Externe Links

1. C++17 - Wikipedia
2. Funktionsfähige C++17-Beispiele