Maison > développement back-end > C++ > Quelles sont les fonctionnalités clés du langage et de la bibliothèque introduites dans C 17 ?

Quelles sont les fonctionnalités clés du langage et de la bibliothèque introduites dans C 17 ?

Linda Hamilton
Libérer: 2024-12-13 16:33:13
original
214 Les gens l'ont consulté

What are the Key Language and Library Features Introduced in C  17?

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal