Nouvelles fonctionnalités dans C 17
Suite à l'achèvement du développement des fonctionnalités pour C 17, plusieurs nouvelles fonctionnalités du langage et ajouts de bibliothèques ont été introduits :
Langue Caractéristiques :
-
Utilisation améliorée du modèle :
- Déduction d'arguments de modèle pour les modèles de classe
- Représentation de valeurs de tout type avec modèle
-
Améliorations Lambda :
- Introduction des lambdas constexpr
- Capacité de capture ceci dans lambdas
-
Attributs :
- Introduction de nouveaux attributs, tels que [[fallthrough]], [[nodiscard] ], et [[maybe_unused]]
-
Nettoyage de la syntaxe :
- Variables en ligne
- Syntaxe d'espace de noms simplifiée : espace de noms A::B
- Expressions sans lancer : throw() et noexcept(true)
-
Améliorations du flux de contrôle :
- Liaisons structurées pour décompresser les valeurs
- if (init; condition) et interrupteur (init; condition) pour un contrôle de flux amélioré
- Généralisé Boucles for basées sur une plage
- if constexpr pour la compilation conditionnelle
-
Autres fonctionnalités notables :
- Littéraux hexadécimaux à virgule flottante
- Allocation de mémoire dynamique pour un alignement excessif data
- Élision de copie garantie
- Ordre d'évaluation fixe pour les expressions
- Initialisation directe de la liste des énumérations
- Garanties de progression vers l'avant pour les threads
Bibliothèque Ajouts :
Types de données :
- std::variant pour représenter des valeurs de différents types
- std::facultatif pour représentant des valeurs facultatives
- std::any pour représenter des valeurs de tout type, y compris non copiables types
- std::string_view pour une gestion efficace des références de chaîne
- std::byte pour représenter des données sans informations de type
Callable Handling :
- std::invoke pour un appel générique invocation
- std::apply pour une invocation appelable basée sur des tuples
- std::make_from_tuple pour construire des objets à partir de tuples
- Introduction de is_invocable et des traits associés
Système de fichiers Bibliothèque :
- Mise en œuvre de la spécification technique du système de fichiers (TS)
Nouveaux algorithmes :
- for_each_n, réduire, transformer_reduce et plus
Améliorations du thread :
- Introduction de std::shared_mutex pour un accès multithread plus efficace
- Garanties atomiques et détection de la taille des interférences matérielles
Bibliothèque Ajouts TS fondamentaux :
- Algorithmes de recherche (alg.search)
- Allocateur polymorphe (pmr)
Améliorations des conteneurs :
- try_emplace et insert_or_assign pour un conteneur efficace insertion
- Épissage pour les cartes, les ensembles et les conteneurs non ordonnés
- Accès aux données non const() pour les chaînes
Pointeurs intelligents :
- Corrections et ajustements à unique_ptr
- Introduction de faible_from_this pour la gestion des pointeurs partagés
Divers :
- Utilisation de C11 à la place de C99 pour la bibliothèque standard
- Réservé Espaces de noms std[0-9] pour les futures bibliothèques standard
- Diverses fonctions utilitaires (destroy, non initialisées_***)
- Exposition de fonctions mathématiques spéciales
- Introduction de std :: clamp, std::gcd et std::lcm
- Améliorations de la gestion des exceptions, notamment std::uncaught_exceptions
- std::as_const, std::bool_constant et divers utilitaires de modèles
- Bibliothèque std::chrono améliorée
- Introduction des opérateurs booléens (std:: conjonction, std::disjonction, std::negation)
- Règles d'utilisation de nosauf dans std
Fonctionnalités obsolètes :
- Suppression de certaines bibliothèques C, , result_of et autres
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!