IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Normalisation C++ Discussion :

C++14 : le draft final a été publié


Sujet :

Normalisation C++

  1. #1
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 859
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 859
    Points : 218 580
    Points
    218 580
    Billets dans le blog
    120
    Par défaut C++14 : le draft final a été publié
    C++14 : le draft final a été publié
    Découvrez son contenu


    Le draft final de la nouvelle version du C++14 est publié. La seconde bonne nouvelle, c'est que les compilateurs les plus utilisés supportent déjà cette nouvelle version. Voici ce qu'elle nous apporte :
    • N3323 - Correction de certaines conversions contextuelles du C++ : améliorations du comportement de conversion à un unique opérateur, alors que la conversion d'une valeur de la classe vers le type spécifié par le contexte est possible ;
    • N3472 - valeurs binaires : vous pouvez maintenant écrire des valeurs binaires telles que char c = 0b01011010 ;
    • N3531 - valeurs définies par l'utilisateur pour les types standards : Unité de temps SI.
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      auto d = 2h + 5s + 234ms; // d est une durée de 2 heures, 5 secondes, et 234 millisecondes
    • N3638 - decltype(auto) && déduction du type de retour pour les fonctions normales : decltype(auto) devient légal en C++. Le type de retour peut être déduit à partir de la valeur de retour. Cela résout les problèmes de déduction dans les fonctions récursives et le retour de référence ;
    • N3648 - Capture de variables initialisées dans les lambdas : vous pouvez capturer des variables initialisées ou non initialisées :
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      3
      4
      5
      int x = 4;
      auto y = [&r = x, x = x+1]()->int { 
          r += 2;
          return x+2;
      }(); // Met à jour ::x à 6, et initialise y à 7.
    • N3649 - Expression (polymorphique) générique pour les lambdas : permet à un lambda d'utiliser auto comme spécificateur de type dans la déclaration des paramètres : auto add = [](auto a,auto b){return a + b;} ;
    • N3651 - Variables templates : une variable peut maintenant être un template :
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      template<typename T>
      constexpr T pi = T(3.1415926535897932385);
    • N3652 - Soulagement des prérequis pour les fonctions contexpr : vous pouvez dorénavant utiliser une fonction contexpr qui n'est pas statique ou thread_local, utiliser if (else/if else) et switch (mais pas goto), utiliser des boucles, des objets dont le temps de vie démarre dans l’évaluation contexpr et qui peut changer ;
    • N3653 - Initialiseurs de membre et regroupement : vous pouvez maintenant utiliser les accolades d'initialisation dans le regroupement de membres d'un tableau ;
    • N3664 - Clarification des allocations de mémoire : reformulation des explications de l'allocation de mémoire du standard ;
    • N3760 - [[deprecated]] : nouvel attribut pour signaler un élément déprécié ;
    • N3781 - Séparateur de chiffre : le ' peut être utilisé comme séparateur dans les nombres : 1'000'000 ;
    • N3778 - Opérateur global de déallocation avec une indication de taille : le C++11 apportait un opérateur de déallocation ayant un opérateur de taille, mais un tel opérateur n'était pas global. C'est maintenant corrigé.
    • make_unique : vous pouvez dès à présent faire toutes vos allocations de mémoire sans jamais utiliser directement new et delete.

    Durant la dernière rencontre à Issaquah, les éléments suivants ont été discutés :
    • N3887 - Alias de méta-fonction consistent : les méta-fonction devait avoir un nommage consistent et seul l'élément tuple_element_t manquait dans le standard. C'est corrigé dans le C++14 ;
    • N3891 - Renommage de shared_mutex en shared_timed_mutex : afin d'éviter un possible conflit de nom, le shared_mutex a été renommé en shared_timed_mutex ;
    • N3910 - Que peuvent faire les gestionnaires de signaux ? : clarification des termes des gestionnaires de signaux du standard C++ ;
    • N3924 - Utilisation de rand découragée en C++14 : Rien n'a été déprécié dans le C++14 à l'aide du nouvel attribut. Un des bons candidats serait rand qui n'est pas déprécié (simplement marqué pour être déprécié), par contre std::random_shuffle l'est ;
    • N3927 - Définition de lock-free : reformulation afin de gagner en précision de la définition de lock-free.



    Votre opinion

    Quelles sont les choses que vous attendiez le plus ?
    Quelles sont les éléments que vous auriez voulu voir dans cette version ?


    Source

    Billet
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  2. #2
    Membre émérite

    Inscrit en
    Mai 2008
    Messages
    1 014
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 1 014
    Points : 2 252
    Points
    2 252
    Par défaut
    Bonjour,
    Une autre petite amélioration de la STL C++14 très appréciable :
    N3531 - User-defined Literals for Standard Library Types (version 3) : Unité de temps SI.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    auto d = 2h + 5s + 234ms; // d is a duration of 2 hours, 5 seconds, and 234 milliseconds

  3. #3
    Expert éminent sénior

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 189
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 189
    Points : 17 141
    Points
    17 141
    Par défaut
    Je suis peut-être bigleux, mais je n'ai pas trouvé le draft lui-même.

    Où peut-on le trouver?
    Mes principes de bases du codeur qui veut pouvoir dormir:
    • Une variable de moins est une source d'erreur en moins.
    • Un pointeur de moins est une montagne d'erreurs en moins.
    • Un copier-coller, ça doit se justifier... Deux, c'est un de trop.
    • jamais signifie "sauf si j'ai passé trois jours à prouver que je peux".
    • La plus sotte des questions est celle qu'on ne pose pas.
    Pour faire des graphes, essayez yEd.
    le ter nel est le titre porté par un de mes personnages de jeu de rôle

  4. #4
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 859
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 859
    Points : 218 580
    Points
    218 580
    Billets dans le blog
    120
    Par défaut
    Merci
    C'est tout de même très lié aux valeurs binaires, si je comprend bien.
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    432
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 432
    Points : 593
    Points
    593
    Par défaut
    Citation Envoyé par LittleWhite Voir le message
    Quelles sont les choses que vous attendiez le plus ?
    Ce que j'attendais le plus c'est pouvoir écrire des nombre binaires en binaires, je comprend pas d'ailleurs pourquoi c'était pas là avant, ca devait pas être très très compliqué à implémenter.
    Mais ca fait plaisir aussi de pouvoir utiliser les expression génériques pour les lambdas, le make_unique, et que ce soit beaucoup plus simple d'avoir une fonction constexpr !

  6. #6
    Expert éminent sénior
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 275
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 275
    Points : 10 985
    Points
    10 985
    Par défaut
    Ce que j'attendais. make_unique, lambda génériques, le relâchement des contraintes pour l'écriture de fonctions constexpr , la syntaxe étendue pour les initialiseurs de membre et regroupement,

    Ce que j'aurai voulu vu voir: n4075 sur la programmation par contrat. Mais visiblement, le sujet n'est pas abandonné même si cette forme l'a été -> n4110, une étude de Andrzej Krzemieʼnski (je donne les liens ici: http://luchermitte.github.io/blog/20...2014-ou-2017-p ). Et sur le sujet, j'aurai bien aimé que vector::operator[] requière un assert() sur ces préconditions ; en fait: j'aimerai que toutes les préconditions exprimées dans la norme soit doublées d'assertions -- si le n4075 était passé, cela aurait été STD_ASSERT_CONTRACT() plutôt qu'assert(), mais l'idée est la même. Certes, il y a les SL checkées, mais ce n'est pas standardisé et la forme varie dans mes souvenirs (IIRC, VC++ lance des exceptions (il faudrait que je vérifie)).
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 2
    Points : 5
    Points
    5
    Par défaut
    Tous n'est pas encore implémente sur GCC.... ;(

    https://gcc.gnu.org/projects/cxx1y.html

  8. #8
    Membre éclairé
    Homme Profil pro
    Développeur C++
    Inscrit en
    Octobre 2008
    Messages
    242
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur C++

    Informations forums :
    Inscription : Octobre 2008
    Messages : 242
    Points : 706
    Points
    706
    Par défaut
    Les user defined literals font parti de mes chouchous avec l'ajout de standard pour l'unité de temps c'est vraiment génial

    Celui que j'attendais avec impatience était le std::make_unique afin de ne plus avoir aucun new dans mon code.

    Je suis aussi content de plus avoir à utiliser la new return value syntax et pouvoir juste utiliser auto pour la déduction du retour de type.

  9. #9
    Expert éminent sénior Avatar de Uther
    Homme Profil pro
    Tourneur Fraiseur
    Inscrit en
    Avril 2002
    Messages
    4 562
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Tourneur Fraiseur

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 562
    Points : 15 493
    Points
    15 493
    Par défaut
    Je ne suis qu'un utilisateur ponctuel de C++, mon avis n'est peut-être pas représentatif, mais je trouve que le fait de pouvoir utiliser auto presque partout est plus un problème qu'une amélioration. C'est vrai que rien n'oblige a l'utiliser et qu'on a déjà tous les outils possibles en C++ pour faire du code dont le fonctionnement n'est pas évident, mais je me serait passé d'ajouter celui là.

  10. #10
    Membre confirmé
    Avatar de gb_68
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2006
    Messages
    232
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 232
    Points : 546
    Points
    546
    Par défaut
    Je ne suis pas non plus particulièrement fan d'un "Presque Toujours Auto", mais cette idée fait son chemin aaa style : almost always auto.

    Pour autant la présence d'un auto - déduction automatique du type - devenait une quasi nécessité dans beaucoup de cas (types définis par l'implémentation) et une simplification bienvenue dans d'autres, même si elle pose d'autres problèmes notamment avec les expressions templates (problème non trivial encore non résolu n4035 - vous saviez que l'on a de telles célébrités sur notre forum ).


    On ne peut donc blâmer son existence.


    Les derniers ajouts répondent aussi à des besoins importants : enfin des lambdas polymorphiques et une déduction du type de retour "différée".

    Ce dernier point à des avantages qui n'apparaissent pas immédiatement, mais bien utiles try{stupid name lookup tricks for c++11 }catch(const head_explosion &){ /*TODO*/ }

  11. #11
    Rédacteur/Modérateur
    Avatar de JolyLoic
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    5 463
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 5 463
    Points : 16 213
    Points
    16 213
    Par défaut
    J'ai commencé à me mettre à "AAA", pour voir ce que ça donne, et l'impression que j'en ai pour l'instant, c'est que ça améliore plutôt la lisibilité quand le reste du code est bien écrit (par exemple, on a plein de vieux code qui prend une valeur de retour en argument par référence, et là, ça reste lourd). Mais je n'ai pas encore assez de recul pour donner un avis définitif.
    Ma session aux Microsoft TechDays 2013 : Développer en natif avec C++11.
    Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
    Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage à la découverte d'un nouveau monde
    Je donne des formations au C++ en entreprise, n'hésitez pas à me contacter.

  12. #12
    r0d
    r0d est déconnecté
    Expert éminent

    Homme Profil pro
    tech lead c++ linux
    Inscrit en
    Août 2004
    Messages
    4 262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : tech lead c++ linux

    Informations forums :
    Inscription : Août 2004
    Messages : 4 262
    Points : 6 680
    Points
    6 680
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par JolyLoic Voir le message
    J'ai commencé à me mettre à "AAA", pour voir ce que ça donne, et l'impression que j'en ai pour l'instant, c'est que ça améliore plutôt la lisibilité quand le reste du code est bien écrit (par exemple, on a plein de vieux code qui prend une valeur de retour en argument par référence, et là, ça reste lourd). Mais je n'ai pas encore assez de recul pour donner un avis définitif.
    Je me suis mis également au "AAA", et passé les premiers écueils (par exemple l'utilisation de auto&), pour l'instant je ne vois que du positif.
    « L'effort par lequel toute chose tend à persévérer dans son être n'est rien de plus que l'essence actuelle de cette chose. »
    Spinoza — Éthique III, Proposition VII

  13. #13
    Invité
    Invité(e)
    Par défaut
    Je m'attends à une séries de joies dans l'avenir du c++, quand j'ai vu cet article je me suis dis cool!

    Le c++11 m'a tellement aidé (surtout au niveau de la méta-programmation) et m'a permis de pouvoir me débarrasser de certaines bibliothèques. (Il faut dire que le c++11 intègre une grosse partie des fonctionnalités de cette bibliothèque)
    C'est entre autre grâce au c++11 et au c++14 que j'ai pu faire un système de sérialisation de manière simple et rapide avec mon framework.

    Bref cette norme est géante grâce aux template variadiques entre autre et aux classes de traits. (Même si la syntaxe reste assez complexe, au début je n'avais pas l'habitude d'utiliser des structures plutôt que des boucles pour itérer mais avec l'habitude on s'y fais vite!)

    Le c++14 semble être une amélioration syntaxique du c++11 plutôt que une intégration de nouveautés, moi ce que j'attends surtout c'est de voir comment va évoluer cette syntaxe! (Et de voir si il y aura encore des nouveautés énormes comme celle des variadique template.)

    Un système de macro évolué qui nous permettrai d'exporter les macros en dehors d'une bibliothèque, modifier les .h et pouvoir recompiler la bibliothèque par exemple. (Bien que je pense que ça doit déjà être possible de le faire avec des bibliothèques dynamique.)

    Bref je suis impatient de voir ce que ça va donner au niveau de la méta-programmation dans le futur.
    Dernière modification par Neckara ; 26/08/2014 à 08h42. Motif: librarie -> bibliothèque

  14. #14
    Expert éminent sénior

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 189
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 189
    Points : 17 141
    Points
    17 141
    Par défaut
    Si tu fais référence à Boost, il ne faut pas rechigner à l'utiliser, vu qu'elle constitue en quelque sort la préversion de la future norme.
    Il faudrait la considérer comme la "vraie" bibliothèque standard.
    Mes principes de bases du codeur qui veut pouvoir dormir:
    • Une variable de moins est une source d'erreur en moins.
    • Un pointeur de moins est une montagne d'erreurs en moins.
    • Un copier-coller, ça doit se justifier... Deux, c'est un de trop.
    • jamais signifie "sauf si j'ai passé trois jours à prouver que je peux".
    • La plus sotte des questions est celle qu'on ne pose pas.
    Pour faire des graphes, essayez yEd.
    le ter nel est le titre porté par un de mes personnages de jeu de rôle

  15. #15
    Membre émérite
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    2 764
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 764
    Points : 2 705
    Points
    2 705
    Par défaut
    C++15, finalement ?...

  16. #16
    Rédacteur/Modérateur
    Avatar de JolyLoic
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    5 463
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 5 463
    Points : 16 213
    Points
    16 213
    Par défaut
    Non, C++14, même si la publication a effectivement eu lieu en 2015 (la version finale, qui a été publiée, avait été envoyée à l'ISO le 7 octobre, et ils mettent un peu de temps à publier).

    Il est disponible (à un prix prohibitif) là : http://www.iso.org/iso/home/store/ca...csnumber=64029
    Quand il sera publié sur le site Ansi, peut-être que le prix sera plus raisonnable. Mais on peut comme toujours trouver sans soucis des versions préliminaires gratuitement.
    Ma session aux Microsoft TechDays 2013 : Développer en natif avec C++11.
    Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
    Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage à la découverte d'un nouveau monde
    Je donne des formations au C++ en entreprise, n'hésitez pas à me contacter.

Discussions similaires

  1. C++0x : le Draft final a été voté !
    Par Klaim dans le forum Normalisation
    Réponses: 181
    Dernier message: 25/01/2012, 23h57
  2. C++0x : Final Committee Draft disponible
    Par Jean-Marc.Bourguet dans le forum Contribuez
    Réponses: 63
    Dernier message: 28/10/2010, 14h11
  3. Final Committee Draft disponible
    Par Jean-Marc.Bourguet dans le forum C++
    Réponses: 3
    Dernier message: 31/03/2010, 12h18
  4. C++0x : le Draft final a été voté !
    Par Klaim dans le forum Contribuez
    Réponses: 2
    Dernier message: 14/03/2010, 18h43

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo