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
279 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!

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