4 points par GN⁺ 2025-04-27 | Aucun commentaire pour le moment. | Partager sur WhatsApp
  • GCC 15 ajoute un grand nombre de fonctionnalités C++26 et améliore aussi certaines fonctionnalités C++23
  • Les principaux ajouts incluent Pack Indexing, Variadic Friends, l’indication du motif de suppression, les conditions avec structured bindings, etc.
  • De nouvelles options du compilateur et de nouveaux avertissements ont également été introduits, améliorant l’expérience développeur
  • La prise en charge des modules C++ a été renforcée, et la vitesse de compilation des templates a été optimisée
  • GCC 15 a été adopté comme compilateur par défaut de Fedora 42 et devrait bientôt être proposé dans le Red Hat GCC Toolset

Les nouvelles fonctionnalités C++ de GCC 15

  • GCC 15.1 est sorti le 25 avril 2025 et introduit sérieusement les fonctionnalités de C++26
  • Le standard par défaut reste gnu++17, et il est possible d’activer les fonctionnalités récentes avec -std=c++23, -std=c++26, etc.
  • Les fonctionnalités C++20, C++23 et C++26 restent encore expérimentales (experimental)

Principales fonctionnalités de C++26

  • Pack Indexing

    • Il devient possible d’accéder directement à un élément précis dans des arguments de Variadic Template avec la syntaxe pack...[N]
    • Cela permet de référencer proprement, par exemple, le premier argument sans astuces de répétition
  • Attribution d’attributs aux Structured Bindings

    • Il devient possible d’appliquer séparément [[attribute]] à chacune des variables issues d’un structured binding
    • Par exemple, on peut marquer uniquement une variable liée spécifique avec [[deprecated]]
  • Ajout d’une explication aux fonctions supprimées

    • La syntaxe = delete("raison") permet de fournir un message dans l’erreur d’appel d’une fonction supprimée
  • Variadic Friends

    • Dans une classe template, il devient possible de déclarer plusieurs types comme friend en une seule fois
    • C’est utile pour renforcer le contrôle d’accès, comme avec le pattern Passkey
  • constexpr Placement New

    • std::allocator et placement new peuvent être utilisés dans un contexte constexpr
  • Utilisation des structured bindings dans les conditions

    • Il devient possible de déclarer des structured bindings dans les conditions de if, while et switch
    • L’évaluation de la condition est effectuée par une variable interne générée par le compilateur
  • Interdiction de supprimer des types incomplets

    • Si delete ou delete[] est utilisé sur un type incomplet, une erreur de compilation est générée en mode C++26
  • Avertissement sur la virgule d’Oxford

    • En C++26, le compilateur émet un avertissement pour les déclarations de fonctions variadiques qui utilisent uniquement ... sans , ...
  • Suppression de la comparaison de tableaux

    • Le code qui compare des tableaux avec == est traité comme une erreur
    • Dans C++20, ce n’était qu’un avertissement, mais cela devient désormais une erreur de compilation en mode C++26
  • Directive #embed

    • Prise en charge de #embed, qui permet d’insérer directement des données binaires dans le code source

Aucun commentaire pour le moment.

Aucun commentaire pour le moment.