Developpez.com - Rubrique C++

Le Club des Développeurs et IT Pro

C++0x : Fin de discussions techniques pour la nouvelle normalisation

Le 2011-03-25 19:57:32, par Arzar, Membre émérite
THIS IS IT !!

Howard Hinnant, le président du Library Working Group du comité C++ vient de lâcher le morceau sur Stack Overflow !!

Le draft final est terminé !!

Il sera rendu officiel et public le 13 avril. Pour compléter le processus ISO il reste encore quelques formalités administrative mais c'est une étape purement bureaucratique, car du point de vue technique c'est fini !
  Discussion forum
181 commentaires
  • Obsidian
    Modérateur
    Envoyé par koala01
    Là s'arrête à peu pres la liste du public potentiel de la liste, et tu remarqueras que cela ne fait malgré tout pas grand monde, surtout lorsque l'on sait que seules les trois première catégories sitées sont réellement susceptibles de vouloir l'obtenir
    À dire vrai, cette distribution est due en grande partie au prix prohibitif de la norme. Si celle-ci était disponible gratuitement, elle serait référencée un peu partout et le nombre de gens qui finiraient par y aboutir serait beaucoup plus conséquent.

    J'avoue bien humblement que j'ai moi-même commencé à lire les normes C et C++ en arrivant sur Développez et aujourd'hui, je ne conçois pas de faire autrement.

    Le problème avec les organismes de normalisation (ou les offices de brevets) qui se paient sur les documents qu'ils publient est que le contenu de ces documents est censé être suivi par tous les gens qui souhaitent programmer avec ces langages. C'est vrai en informatique, mais c'est encore plus vrai dans d'autres domaines. La C15-100, par exemple, devrait être suivie par quiconque refait son électricité chez soi, pour des raisons de sécurité. Et pour cette dernière raison, elle ne devrait pas être en accès restreint, et encore moins inaccessible de fait pour des raisons tarifaires.

    Je me souviens qu'étant adolescent, je m'intéressais à la norme V.23 pour essayer de me bricoler un petit modem « pour l'exercice ». C'est à cette occasion que j'ai découvert les prix pratiqués par l'UIT (ex CCITT) (bon, depuis, celle-ci est devenue disponible gratuitement).

    Mais même si une norme n'est pas un document d'apprentissage, cela devrait néanmoins être un vademecum pour tous une fois un certain niveau de maîtrise atteint (comprendre par là, une fois que l'on est capable d'écrire un « Hello World » seul :-) ).
  • Goten
    Membre chevronné
    Envoyé par r0d
    Au fait, ce nouveau standard ne permet toujours pas de faire:
    Code :
    std::vector< MaClasseTemplate< UnType > >


    Parce que les variadic templates m'ont induit en erreur, et je suis un peu perdu

    Sinon, visual 2010 implémente pas encore final et override
    tu peux même le faire en c++98 ça..
  • 3DArchi
    Rédacteur
    non. Ca rend l'écriture un peu moins absconse
  • Hinault Romaric
    Responsable .NET
    Le comité ISO C++ valide le Draft final de la norme C++ 0X
    il sera publié officiellement dans les mois avenir

    Mise à jour du 29/03/11, par Hinault Romaric

    Les travaux pour la définition de la nouvelle norme pour le langage de programmation C++ sont enfin achevés et validés.

    La norme, qui remplacera celle de 1997, et dont la publication initiale était prévue au plus tard pour 2010, vient de franchir un cap majeur. Le comité de normalisation ISO C ++ vient en effet d'approuver les dernières modifications techniques lors d'une réunion qui s'est tenue du 21 au 25 mars à Madrid en Espagne, sur le Draft final (Final Commitee Draft) et sur un Draft international (Final Draft International Standard - FDIS).

    Pour Herb Sutter, président du comité ISO C++, le FDIS est de «très bonne qualité », ce qui en quelque sorte pourrait justifier le retard accusé dans sa validation. « Nous avons pris beaucoup plus de temps pour produire la seconde norme du C++. C'est en partie à cause de ses fonctionnalités ambitieuses, et surtout sa qualité [...] Cette norme est largement considéré comme le document FDIS de plus haute qualité que nous n'ayons jamais élaboré » écrit-il sur son blog.

    Au menu, des changements comme l'abandon des clauses new et explicit pour la gestion des overload, la rationalisation de l'utilisation de noexcept dans la bibliothèque ou la modification des règles de recherche de Begin et end pour un range-for.

    On notera également la suppression de plusieurs spécifications jugées obsolètes.

    La publication officielle de la norme est prévue pour cette année, si le FDIS est validé lors d'une ultime réunion à Genève.

    Le nouveau standard aura finalement pour nom de code C++ 2011., mettant ainsi fin à toutes les spéculations. Et à toutes les plaisanteries.

    Source : Blog Herb Sutter

    Et vous ?

    Que pensez-vous de cette nouvelle norme?
  • Firwen
    Membre expérimenté
    Aprés Duke Nukem forever, C++ 2011.

    Vraiment une sale année pour les trolls 2011

    Que du bon, vivement une implémentation à 100% dans GCC, j'en salive déja sur mon clavier
  • yan
    Rédacteur
    Envoyé par r0d
    Au fait, ce nouveau standard ne permet toujours pas de faire:
    Code :
    std::vector< MaClasseTemplate< UnType > >

    Comment cela?
  • Klaim
    Membre expert
    C'était l'un des attributs qui sont passé en mots-clés récemment.

    Personellement je pense que, utilisé avec beaucoup de parcimonie, ça peut être utile, notemment pour les conteneurs de la stl que certains débutants ont tendance a prendre comme base d'autres classes... le souci c'est surtout que rien ne te dit (sauf warning de certains compilateurs) que tu ne devrais pas hériter d'une classe sous pretexte que tupeux, au risque d'avoir des problèmes obscures au runtime (parceque le destructeur de la classe de base n'est pas virtuel.
    Là ce serait un moyen de dire explicitement : non.

    Mais il est facile d'abuser de ce genre de feature.
  • Goten
    Membre chevronné
    Envoyé par r0d
    Concernant les templates, en fait je me suis mal exprimé, je voulais parler de vecteur (ou n'importe quel conteneur template) contenant une classe template non spécialisée. Par exemple:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    template <typename T>
    class MaClasseTemplate
    {
    //...
    };
    
    // puis ailleurs:
    std::vector< MaClasseTemplate >;
    Je ne sais pas pourquoi, j'avais compris que les variadic templates servaient à résoudre ce problème. Sans doute est-ce mon anglais (approximatif) qui m'a joué un tour.
    Y'a les template typedef.

    [/HS]
    Mais alors du coup, les variadic template ça rend obsolète les typelist? (comme vous le voyez, les templates c'est pas mon truc )
    Non.

    @guillaume : les typelists c'est pas destiné uniquement à émuler les variadic templates ... (et pire ont a de meilleure méthode pour le faire).
  • JolyLoic
    Rédacteur/Modérateur
    Je n'étais pas présent lors de sa discussion... Mais je pense qu'il était un peu naïf

    De mémoire, mes réflexions quand je l'avais lu, c'est que les remarques sont mal ciblées pour une discussion en comité C++ : Et s'adressent à la version C++98, et non à la target en cours, et considèrent certaines implémentations du langage, au lieu de s'adresser au langage lui même :

    Par exemple, sur l'aspect allocateur, il y a déjà eu beaucoup de boulot pour C++0x (avec les scoped allocators, poussés en avant entre autre par Bloomberg). Je ne sais pas s'ils répondent au besoin EA, mais je crois qu'ils ne sont pas discutés dans le document correspondant. D'autres points sont liés à C++98, et sont déjà corrigés dans C++0x, du coup, le document apporte peu (sauf s'il disait que les corrections apportées posaient encore problème).

    Une autre partie des problèmes annoncés est lié à la présence de mauvais compilateurs, ne respectant pas bien ou pas efficacement la norme. On peut imaginer que dans ce cas la réponse soit plutôt "faites pressions sur vos implémenteurs, plutôt que de vouloir contourner ça dans la bibliothèque".

    Quels sont les points que tu considères les plus utiles dans EASTL ?
  • koala01
    Expert éminent sénior
    Le fait est que la norme n'est franchement pas destinée à être lue par tout le monde et n'importe qui, ne serait ce qu'à cause des références croisées qui rendent vraiment sa compréhension globale des plus ardues:

    Au premier rang, tu as les développeur de compilo : s'il y a un groupe qui doit l'utiliser, c'est bien celui-ci, mais je ne serais pas étonné qu'il n'y ait qu'une copie achetée de la norme par entreprise travaillant dans le domaine et mise "sur le réseau" pour permettre aux collaborateurs d'y accéder.

    Juste en dessous, tu as quelques "pontes" (de Zutter, stroutroup, et autres) qui vont la décortiquer et essayer de faire des articles (ou des livres) de "vulgarisation". Je n'ai pas la prétention de tous les connaitre, mais s'il doit y avoir une vingtaine de types comme cela à travers le monde, c'est sans doute beaucoup.

    Un peu plus loin, tu as un certain nombre, mais pas énormément malgré tout, de gens qui vont y plonger "à la demande" pour apporter une réponse précise à une question précise...

    Il doit y en avoir cinq ou six à peine sur developpez, dont certains sont surement actif sur d'autres forums

    Puis on croisera quelques personnes comme toi (et ce n'est qu'une constatation, bien loin d'être une attaque, hein ) qui s'intéressent à la norme, qui essayent de la comprendre et de l'utiliser, qui posent des questions dessus, mais qui ne l'ouvriront sans doute jamais, pour des raisons qui leur sont propres.

    Enfin, nous trouverons de nombreuses personnes qui seront contentes d'obtenirs des informations sur la norme, mais qui ne "vivent pas beaucoup plus mal" le fait de ne pas en avoir : c'est juste un "plus" pour eux que d'apprendre que ce qu'ils font est (ou n'est pas) standard, et il tenteront (ou non) de s'en approcher

    Là s'arrête à peu pres la liste du public potentiel de la liste, et tu remarqueras que cela ne fait malgré tout pas grand monde, surtout lorsque l'on sait que seules les trois première catégories sitées sont réellement susceptibles de vouloir l'obtenir

    (Beaucoup) plus loin de ces catégories, il y a les gens qui vont simplement suivre ce qu'on leur dit sur les forums, sans s'inquiéter du tout de la norme.

    Quand ils ne se fient, purement et simplement qu'à ce que leur donne l'intellisens, en n'imaginant, au pire, même pas une seconde que les fonctions préfixées du double underscore sont des fonctions propres à l'implémentation, et donc susceptibles de provoquer des problèmes de compatibilité avec d'autres systèmes, dont ils n'ont de toutes manières que faire.