Neue Funktionen in C 17
Nach Abschluss der Funktionsentwicklung für C 17 wurden mehrere neue Sprachfunktionen und Bibliothekserweiterungen eingeführt:
Sprache Funktionen:
-
Verbesserte Vorlagenverwendung:
- Abzug von Vorlagenargumenten für Klassenvorlagen
- Darstellung von Werte jeglicher Art mit Vorlage
-
Lambda-Verbesserungen:
- Einführung von constexpr-Lambdas
- Fähigkeit zur Erfassung das hier Lambdas
-
Attribute:
- Einführung neuer Attribute, wie z. B. [[fallthrough]], [[nodiscard] ], Und [[maybe_unused]]
-
Syntaxbereinigung:
- Inline-Variablen
- Vereinfachte Namespace-Syntax: Namespace A::B
- No-throw-Ausdrücke: throw() und noexclusive(true)
-
Verbesserungen des Kontrollflusses:
- Strukturierte Bindungen zum Entpacken von Werten
- if (init; Bedingung) und Schalter (init; Bedingung) für eine verbesserte Flusskontrolle
- Verallgemeinert Bereichsbasierte for-Schleifen
- if constexpr für bedingte Kompilierung
-
Weitere bemerkenswerte Funktionen:
- Hexadezimale Gleitkomma-Literale
- Dynamische Speicherzuweisung für Überausrichtung Daten
- Garantierte Kopierelision
- Feste Auswertungsreihenfolge für Ausdrücke
- Direkte Listeninitialisierung von Aufzählungen
- Vorwärtsfortschrittsgarantien für Threads
Bibliotheksergänzungen:
Datentypen:
- std ::variant zur Darstellung von Werten verschiedener Typen
- std::optional zur Darstellung von optional Werte
- std::any zur Darstellung von Werten beliebiger Art, einschließlich nicht kopierbarer Typen
- std::string_view zur effizienten Handhabung von String-Referenzen
- std::byte für Darstellung von Daten ohne Typinformationen
Aufrufbar Handhabung:
- std::invoke für generischen aufrufbaren Aufruf
- std::apply für tupelbasierten aufrufbaren Aufruf
- std::make_from_tuple für die Konstruktion Objekte aus Tupeln
- Einführung von is_invocable und verwandten Merkmale
Dateisystembibliothek:
- Implementierung der Dateisystem-Technischen Spezifikation (TS)
Neue Algorithmen:
- for_each_n, reduzieren, transform_reduce und mehr
Threading-Verbesserungen:
- Einführung von std::shared_mutex für effizienteren Multithread-Zugriff
- Atomgarantien und Hardware-Interferenzgröße Erkennung
Bibliotheksgrundlagen TS-Ergänzungen:
- Suchalgorithmen (alg.search)
- Polymorpher Allokator (pmr)
Container-Verbesserungen:
- try_emplace und insert_or_assign für einen effizienten Container Einfügen
- Spleißen für Karten, Mengen und ungeordnete Container
- Nicht-konstanter data()-Zugriff für Strings
Intelligente Zeiger:
- Korrekturen und Optimierungen an unique_ptr
- Einführung von schwach_from_this zur Verwaltung gemeinsamer Zeiger
Sonstiges:
- Stattdessen Verwendung von C11 von C99 für die Standardbibliothek
- Reserviert std[0-9]-Namespaces für zukünftige Standardbibliotheken
- Verschiedene Hilfsfunktionen (destroy, uninitialized_***)
- Veröffentlichung spezieller mathematischer Funktionen
- Einführung von std:: clamp, std::gcd und std::lcm
- Verbesserungen bei der Ausnahmebehandlung, einschließlich std::uncaught_Exceptions
- std::as_const, std::bool_constant und verschiedene Vorlagendienstprogramme
- Verbesserte std::chrono-Bibliothek
- Einführung boolescher Operatoren (std:: Konjunktion, std::Disjunktion, std::negation)
- Regeln für die Verwendung von „noexclusive“ innerhalb von std
Veraltete Funktionen:
- Entfernung einiger C-Bibliotheken, , result_of und andere
Das obige ist der detaillierte Inhalt vonWas sind die wichtigsten Sprach- und Bibliotheksfunktionen, die in C 17 eingeführt wurden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!