Nouvelles fonctionnalités en c
Fonctionnalités de la langue:
Utilisation du modèle amélioré: -
Modèles de classe
Représentation des valeurs de tout type avec modèle & lt; auto & gt; -
-
Lambda Modiments: -
Lambda. Introduction de constexpr lambdas
Capacité à capturer cela en lambdas -
-
Attributes: -
] Introduction de nouveaux attributs, tels que [[Fallthrough]], [[Nodiscard]], et [[peut-être_unusy]]
Cleanup de syntaxe: -
Variables en ligne
Syntaxe d'espace de noms simplifié: espace de noms a :: b -
Expressions de non-throw: lance () et noExcept (true) -
-
Control Flow Improversés: -
Bouxes structurées pour déballer les valeurs
if (init; condition) and switch (init; condition) for enhanced flow control- Generalized range-based for loops
- if constexpr for conditional compilation
Autres fonctionnalités notables: -
HexaDecimal Float Point Literals
allocation de mémoire dynamique pour les données sur-aligné -
Copie garantie Elision -
Correction de l'ordre d'évaluation pour les expressions -
Initialisation de liste directe des enums -
Garanties de progrès avant pour les threads -
-
&&&] les ajouts de la bibliothèque:
Types de données:
std :: variant pour représenter des valeurs de différents types
std: : facultatif pour représenter des valeurs facultatives -
std :: tout pour représenter les valeurs de tout type, y compris les types non copyables -
std :: string_view pour une gestion efficace des références de chaîne -
std :: octet pour représenter des données sans information de type -
-
manipulation callable:
std :: invoke for générique invocation
] std :: appliquer pour invocation callable basée sur des tuples -
std :: make_from_tuple pour la construction d'objets à partir de tuples -
introduction de IS_invocable et des traits associés -
-
Bibliothèque de systèmes de fichiers:
implémentation de la spécification technique du système de fichiers (ts)
for_each_n, réduir, transform_reduce, et plus
-
Fiffture d'améliorations:
Access
garanties atomiques et détection de taille d'interférence matérielle -
-
Fondamentaux de la bibliothèque
allocateur polymorphique (pMr)
Improvements de conteneurs: -
-
try_emplace et insert_or_assign pour une insertion de récipient efficace
Splicing for Maps, sets et non ordonné conteneurs non-const data () Access for Strings
-
pointeurs intelligents: -
-
Correction et ajustement à UNIQUE_PTR
Introduction de WIBL_FROM_THIS pour gérer les pointeurs partagés
] Utilisation de C11 au lieu de C99 pour la bibliothèque standard
STD réservé [0-9] Espaces de noms pour les futures bibliothèques standard -
diverses fonctions utilitaires (détruire, non initialisé _ ***) -
Exposure of special math functions- Introduction of std::clamp, std::gcd, and std::lcm
- Exception handling improvements, including std::uncaught_exceptions
- std :: as_const, std :: bool_constant, et divers utilitaires de modèle
-
Amélioration de la bibliothèque chrono -
Introduction des opérateurs booléens (std :: conjonction, std :: disjunction, std: : Négation) -
Règles pour l'utilisation de NOexcept dans STD -
-
Fonctionnalités dépréciées:
Suppression de certaines bibliothèques C, & lt; codecvt & gt;, résultat_of, et autres