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++0x : le Draft final a été voté !


Sujet :

Normalisation C++

  1. #61
    Responsable .NET

    Avatar de Hinault Romaric
    Homme Profil pro
    Consultant
    Inscrit en
    janvier 2007
    Messages
    4 561
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Consultant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : janvier 2007
    Messages : 4 561
    Points : 252 043
    Points
    252 043
    Billets dans le blog
    107
    Par défaut Le comité ISO C++ valide le Draft final de la norme C++ 0X
    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?
    Vous souhaitez participer aux rubriques .NET ? Contactez-moi

    Si déboguer est l’art de corriger les bugs, alors programmer est l’art d’en faire
    Mon blog, Mes articles, Me suivre sur Twitter
    En posant correctement votre problème, on trouve la moitié de la solution

  2. #62
    Membre expérimenté Avatar de Firwen
    Profil pro
    Inscrit en
    juin 2009
    Messages
    472
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : juin 2009
    Messages : 472
    Points : 1 500
    Points
    1 500
    Par défaut
    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
    It's not a bug, it's a feature

  3. #63
    Débutant
    Profil pro
    Inscrit en
    mai 2006
    Messages
    688
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : mai 2006
    Messages : 688
    Points : 169
    Points
    169
    Par défaut
    "si le FDIS est validé lors d'une ultime réunion à Genève"

    Tout n'est donc pas encore validé, je suis un peu perdu avec cette phrase ... ?

  4. #64
    Membre expert
    Avatar de Klaim
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    août 2004
    Messages
    1 717
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur de jeux vidéo
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : août 2004
    Messages : 1 717
    Points : 3 285
    Points
    3 285
    Par défaut
    Il manque une étape administrative, donc officiellement il sera "finis" vers juillet. Mais techniquement il est déjà fini.

    Un peu comme quand tu finis un jeu vidéo mais que l'editeur a besoin de faire un travail marketing autour avant de le mettre dans les bacs.

    ...

    Sauf que c'est pas du marketing, mais juste de l'administration ISO.

    Enfin vous m'avez compris quoi.

  5. #65
    r0d
    r0d est déconnecté
    Expert éminent

    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    août 2004
    Messages
    4 261
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur de jeux vidéo

    Informations forums :
    Inscription : août 2004
    Messages : 4 261
    Points : 6 533
    Points
    6 533
    Billets dans le blog
    1
    Par défaut
    Au fait, ce nouveau standard ne permet toujours pas de faire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    Tester c'est douter, corriger c'est abdiquer.

  6. #66
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    mars 2004
    Messages
    10 031
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : mars 2004
    Messages : 10 031
    Points : 13 950
    Points
    13 950
    Par défaut
    Citation Envoyé par r0d Voir le message
    Au fait, ce nouveau standard ne permet toujours pas de faire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    std::vector< MaClasseTemplate< UnType > >
    Comment cela?

  7. #67
    Membre chevronné
    Avatar de Goten
    Profil pro
    Inscrit en
    juillet 2008
    Messages
    1 580
    Détails du profil
    Informations personnelles :
    Âge : 29
    Localisation : France

    Informations forums :
    Inscription : juillet 2008
    Messages : 1 580
    Points : 2 201
    Points
    2 201
    Par défaut
    Citation Envoyé par r0d Voir le message
    Au fait, ce nouveau standard ne permet toujours pas de faire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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..
    "Hardcoded types are to generic code what magic constants are to regular code." --A. Alexandrescu

  8. #68
    Membre expert
    Avatar de Klaim
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    août 2004
    Messages
    1 717
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur de jeux vidéo
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : août 2004
    Messages : 1 717
    Points : 3 285
    Points
    3 285
    Par défaut
    Sinon, visual 2010 implémente pas encore final et override
    En même temps ils ont été "fixés" il y a très peu de temps hein...

  9. #69
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : juin 2008
    Messages : 7 634
    Points : 13 485
    Points
    13 485
    Par défaut
    Citation Envoyé par Klaim Voir le message
    Sinon, visual 2010 implémente pas encore final et override
    En même temps ils ont été "fixés" il y a très peu de temps hein...
    En même temps, je suis dubitatif sur leur intérêt. A priori, j'ai l'impression qu'une utilisation de NVI réduit pas mal les cas 'utiles' de override. Quand à final, à part à des fins d'optimisations par le compilateur, j'avoue que j'en vois mal l'intérêt.

  10. #70
    Rédacteur/Modérateur
    Avatar de JolyLoic
    Homme Profil pro
    Développeur informatique
    Inscrit en
    août 2004
    Messages
    5 460
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    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 460
    Points : 16 017
    Points
    16 017
    Par défaut
    Citation Envoyé par 3DArchi Voir le message
    En même temps, je suis dubitatif sur leur intérêt. A priori, j'ai l'impression qu'une utilisation de NVI réduit pas mal les cas 'utiles' de override. Quand à final, à part à des fins d'optimisations par le compilateur, j'avoue que j'en vois mal l'intérêt.
    Je ne vois pas trop le lien entre override et NVI. Il y a quand même pas mal de cas où, même avec NVI, la classe de base peut définir une implémentation pour la fonction virtuelle. Et dans ce cas, il est intéressant pour la personne écrivant une classe dérivée de pouvoir être certaine qu'elle ne s'est pas plantée dans l'écriture d'une fonction remplaçant cette fonction virtuelle non pure (ou que la définition de la fonction virtuelle non pure dans la classe de base n'a pas été modifiée par la suite).
    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.

  11. #71
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : juin 2008
    Messages : 7 634
    Points : 13 485
    Points
    13 485
    Par défaut
    Citation Envoyé par JolyLoic Voir le message
    Je ne vois pas trop le lien entre override et NVI. Il y a quand même pas mal de cas où, même avec NVI, la classe de base peut définir une implémentation pour la fonction virtuelle. Et dans ce cas, il est intéressant pour la personne écrivant une classe dérivée de pouvoir être certaine qu'elle ne s'est pas plantée dans l'écriture d'une fonction remplaçant cette fonction virtuelle non pure (ou que la définition de la fonction virtuelle non pure dans la classe de base n'a pas été modifiée par la suite).
    Effectivement ma mémoire m'a joué des tours. J'avais retenu que l'idée derrière était d'éviter les masquages de fonctions (qui sont empêchés par NVI) alors qu'il y a aussi la conformité de la signature (qui n'est vérifiée ... qu'au plantage de l'exécution sinon ). Je n'ai pas encore lu la dernière mouture du draft (le n342 il me semble) mais cela s'appliquerait plus à new pour les 3 lignes que j'ai pris le temps de voir.
    Ceci étant dit, je suis toujours interrogatif sur final.

  12. #72
    Membre expérimenté Avatar de Firwen
    Profil pro
    Inscrit en
    juin 2009
    Messages
    472
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : juin 2009
    Messages : 472
    Points : 1 500
    Points
    1 500
    Par défaut
    Ceci étant dit, je suis toujours interrogatif sur final.
    Je n'arrive pas à trouver de reference sur ce "final" qui me semble pas trés logique.
    Où as-tu vu que "final" allait être implémenté dans le draft ?
    It's not a bug, it's a feature

  13. #73
    Membre expert
    Avatar de Klaim
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    août 2004
    Messages
    1 717
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur de jeux vidéo
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : août 2004
    Messages : 1 717
    Points : 3 285
    Points
    3 285
    Par défaut
    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.

  14. #74
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : juin 2008
    Messages : 7 634
    Points : 13 485
    Points
    13 485
    Par défaut
    Citation Envoyé par Firwen Voir le message
    Je n'arrive pas à trouver de reference sur ce "final" qui me semble pas trés logique.
    Où as-tu vu que "final" allait être implémenté dans le draft ?
    Dans l'ancienne version que j'avais (la n3126) c'était dans les attributs : 7.6.4 Final attribute

    Mais dans la nouvelle version (n3242) (pas encore regardée pour ma part), si j'ai bien compris final/override sont passés en mots clés. Tu les as dans 9 Classes (class-virt-specifier) et dans 9.2 Class member (virt-specifier)

  15. #75
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : juin 2008
    Messages : 7 634
    Points : 13 485
    Points
    13 485
    Par défaut
    Citation Envoyé par Klaim Voir le message
    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.
    C'est omettre que l'héritage privé peut avoir de l'intérêt à la place de l'encapsulation

  16. #76
    Rédacteur/Modérateur
    Avatar de JolyLoic
    Homme Profil pro
    Développeur informatique
    Inscrit en
    août 2004
    Messages
    5 460
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    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 460
    Points : 16 017
    Points
    16 017
    Par défaut
    Sans compter que les inheriting constructors permet de plus facilement hériter d'une classe non prévue pour dans les cas où ça a du sens (adapter).
    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.

  17. #77
    r0d
    r0d est déconnecté
    Expert éminent

    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    août 2004
    Messages
    4 261
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur de jeux vidéo

    Informations forums :
    Inscription : août 2004
    Messages : 4 261
    Points : 6 533
    Points
    6 533
    Billets dans le blog
    1
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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.

    Ça peut paraître bizarre de souhaiter pouvoir faire cela, car à première vue ça n'a pas vraiment de sens. Mais en fait je crois que ça pourrait être utile. J'étais tombé sur ce "besoin" quand j'avais tenté de faire une machine à état finie générique. En effet, je voulais créer un tableau de transitions, les transitions étant des templates dont les types sont les 2 états (départ, arrivée). [HS] C'est d'ailleurs un problème intéressant cette histoire de machine à état, et j'ai toujours pas trouvé de solution générique et élégante. [/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 )
    Tester c'est douter, corriger c'est abdiquer.

  18. #78
    Débutant
    Profil pro
    Inscrit en
    mai 2006
    Messages
    688
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : mai 2006
    Messages : 688
    Points : 169
    Points
    169
    Par défaut
    Citation Envoyé par r0d Voir le message
    Mais alors du coup, les variadic template ça rend obsolète les typelist? (comme vous le voyez, les templates c'est pas mon truc )
    Oui

  19. #79
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : juin 2008
    Messages : 7 634
    Points : 13 485
    Points
    13 485
    Par défaut
    non. Ca rend l'écriture un peu moins absconse

  20. #80
    Membre chevronné
    Avatar de Goten
    Profil pro
    Inscrit en
    juillet 2008
    Messages
    1 580
    Détails du profil
    Informations personnelles :
    Âge : 29
    Localisation : France

    Informations forums :
    Inscription : juillet 2008
    Messages : 1 580
    Points : 2 201
    Points
    2 201
    Par défaut
    Citation Envoyé par r0d Voir le message
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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).
    "Hardcoded types are to generic code what magic constants are to regular code." --A. Alexandrescu

Discussions similaires

  1. C++14 : le draft final a été publié
    Par LittleWhite dans le forum Normalisation
    Réponses: 15
    Dernier message: 18/01/2015, 16h18
  2. C++0x : Final Committee Draft disponible
    Par Jean-Marc.Bourguet dans le forum Contribuez
    Réponses: 63
    Dernier message: 28/10/2010, 15h11
  3. Final Committee Draft disponible
    Par Jean-Marc.Bourguet dans le forum C++
    Réponses: 3
    Dernier message: 31/03/2010, 13h18
  4. C++0x : le Draft final a été voté !
    Par Klaim dans le forum Contribuez
    Réponses: 2
    Dernier message: 14/03/2010, 19h43

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