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 894
    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 894
    Points : 219 537
    Points
    219 537
    Billets dans le blog
    124
    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

  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 195
    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 195
    Points : 17 163
    Points
    17 163
    Par défaut
    Je suis peut-être bigleux, mais je n'ai pas trouvé le draft lui-même.

    Où peut-on le trouver?

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


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 894
    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 894
    Points : 219 537
    Points
    219 537
    Billets dans le blog
    124
    Par défaut
    Merci
    C'est tout de même très lié aux valeurs binaires, si je comprend bien.

  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 279
    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 279
    Points : 11 015
    Points
    11 015
    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)).

  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
    243
    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 : 243
    Points : 710
    Points
    710
    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 576
    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 576
    Points : 15 551
    Points
    15 551
    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 : 50
    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.

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

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    4 265
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 4 265
    Points : 6 686
    Points
    6 686
    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.

  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 195
    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 195
    Points : 17 163
    Points
    17 163
    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.

  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 : 50
    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.

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