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

Langage C++ Discussion :

C++0x -> auto?


Sujet :

Langage C++

  1. #21
    Expert confirmé

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2007
    Messages
    1 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 895
    Points : 4 551
    Points
    4 551
    Par défaut
    Citation Envoyé par ponce Voir le message
    En D on exactement le même auto, c'est pratique quand on a la flemme de taper le type d'une variable locale, au prix d'une certaine lisibilité. J'ai tendance à le mettre un peu partout.

    Donc je suis bien content qu'il passe dans C++.
    Le but de auto n'est pas d'autoriser au programmeur une flemardise de plus. Quelques fois le type d'une variable est relativement difficile à déterminer. En exemple avec les fonctions lambda - quel est le type de F dans :

    auto F = [&](int a, int b, float c) -> float { return (float)((a * b) / c) }

    (je crois que je l'ai écrit correctement. Sinon, vous aurez corrigé de vous même...)
    [FAQ des forums][FAQ Développement 2D, 3D et Jeux][Si vous ne savez pas ou vous en êtes...]
    Essayez d'écrire clairement (c'est à dire avec des mots français complets). SMS est votre ennemi.
    Evitez les arguments inutiles - DirectMachin vs. OpenTruc ou G++ vs. Café. C'est dépassé tout ça.
    Et si vous êtes sages, vous aurez peut être vous aussi la chance de passer à la télé. Ou pas.

    Ce site contient un forum d'entraide gratuit. Il ne s'use que si l'on ne s'en sert pas.

  2. #22
    Membre chevronné
    Avatar de Goten
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 580
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 580
    Points : 2 205
    Points
    2 205
    Par défaut
    (ça me semble bon en effet :p).

    Mais même si je suis d'accord auto est là aussi pour s'éviter les expressions à ralonge du genre récupérer un iterator de map qui contient une paire et un string, ce genre de chose :p. (tu me diras ya les typedefs, mais quand même).
    Enfin c'est certains que pour ce qui est int / vector / string je l'utilise(rai) pas..
    "Hardcoded types are to generic code what magic constants are to regular code." --A. Alexandrescu

  3. #23
    Expert confirmé

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2007
    Messages
    1 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 895
    Points : 4 551
    Points
    4 551
    Par défaut
    Citation Envoyé par Goten Voir le message
    (ça me semble bon en effet :p).

    Mais même si je suis d'accord auto est là aussi pour s'éviter les expressions à ralonge du genre récupérer un iterator de map qui contient une paire et un string, ce genre de chose :p. (tu me diras ya les typedefs, mais quand même).
    Voui. Bon. Admettons.
    Enfin c'est certains que pour ce qui est int / vector / string je l'utilise(rai) pas..
    Pour les types simples à écrire, il n'y a pas d'intérêt d'utiliser auto. En fait, ça rends le code plus complexe à déchiffrer - parce que les informations de type ne sont pas disponibles à la lecture...
    [FAQ des forums][FAQ Développement 2D, 3D et Jeux][Si vous ne savez pas ou vous en êtes...]
    Essayez d'écrire clairement (c'est à dire avec des mots français complets). SMS est votre ennemi.
    Evitez les arguments inutiles - DirectMachin vs. OpenTruc ou G++ vs. Café. C'est dépassé tout ça.
    Et si vous êtes sages, vous aurez peut être vous aussi la chance de passer à la télé. Ou pas.

    Ce site contient un forum d'entraide gratuit. Il ne s'use que si l'on ne s'en sert pas.

  4. #24
    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 344
    Points
    3 344
    Par défaut
    Je pense que là ou ça va être vraiment utile c'est pour tout ce qui est templates un peu complexe et les agloritmes.

  5. #25
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    87
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2008
    Messages : 87
    Points : 111
    Points
    111
    Par défaut
    Citation Envoyé par Emmanuel Deloget Voir le message
    Le but de auto n'est pas d'autoriser au programmeur une flemardise de plus. Quelques fois le type d'une variable est relativement difficile à déterminer. En exemple avec les fonctions lambda - quel est le type de F dans :

    auto F = [&](int a, int b, float c) -> float { return (float)((a * b) / c) }

    (je crois que je l'ai écrit correctement. Sinon, vous aurez corrigé de vous même...)
    exactement, et d'ailleurs dans beaucoup de papiers les exemples sont donnés en citants des boost::bind. quel est le type d'un boost::bind ?
    (non ce n'est pas boost::fonction, même si c'est convertible).

    que faire si tu veux stocker une reference sur std::cout par exemple ?
    tu peux toujours aller chercher son type dans les headers mais pourquoi perdre du temps et de la compatibilité entre versions de la stl ?

  6. #26
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Emmanuel Deloget Voir le message
    Le but de auto n'est pas d'autoriser au programmeur une flemardise de plus.
    Dans des langages comme ocaml, tout est "auto". Ca doit être des gros flemmards.


    Non, je trouve ca pratique d'écrire

    au lieu de

    Je n'ai pas envie de donner l'information de type deux fois, ce qui fera un truc de plus à modifier le jour où j'aurais besoin de changer myVar en double.

  7. #27
    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
    Citation Envoyé par Lightness1024 Voir le message
    que faire si tu veux stocker une reference sur std::cout par exemple ?
    ostream &
    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.

  8. #28
    Membre chevronné
    Avatar de Goten
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 580
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 580
    Points : 2 205
    Points
    2 205
    Par défaut
    Citation Envoyé par Lightness1024 Voir le message
    exactement, et d'ailleurs dans beaucoup de papiers les exemples sont donnés en citants des boost::bind. quel est le type d'un boost::bind ?
    (non ce n'est pas boost::fonction, même si c'est convertible).

    que faire si tu veux stocker une reference sur std::cout par exemple ?
    tu peux toujours aller chercher son type dans les headers mais pourquoi perdre du temps et de la compatibilité entre versions de la stl ?
    ostream& comme l'a dit loic, mais ça pose aucun soucis de compatibilité... std::cout est toujours un objet static ostream...
    "Hardcoded types are to generic code what magic constants are to regular code." --A. Alexandrescu

  9. #29
    Expert confirmé

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2007
    Messages
    1 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 895
    Points : 4 551
    Points
    4 551
    Par défaut
    Citation Envoyé par Goten Voir le message
    ostream& comme l'a dit loic, mais ça pose aucun soucis de compatibilité... std::cout est toujours un objet static ostream...
    J'ajoute : dixit la norme
    [FAQ des forums][FAQ Développement 2D, 3D et Jeux][Si vous ne savez pas ou vous en êtes...]
    Essayez d'écrire clairement (c'est à dire avec des mots français complets). SMS est votre ennemi.
    Evitez les arguments inutiles - DirectMachin vs. OpenTruc ou G++ vs. Café. C'est dépassé tout ça.
    Et si vous êtes sages, vous aurez peut être vous aussi la chance de passer à la télé. Ou pas.

    Ce site contient un forum d'entraide gratuit. Il ne s'use que si l'on ne s'en sert pas.

  10. #30
    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 017
    Points
    13 017
    Par défaut
    Citation Envoyé par ponce Voir le message
    Non, je trouve ca pratique d'écrire

    au lieu de

    Je n'ai pas envie de donner l'information de type deux fois, ce qui fera un truc de plus à modifier le jour où j'aurais besoin de changer myVar en double.
    En même temps, tu auras plus vite retrouvé les lignes de code utilisant un float que celle contenant le caractère 'f'.

    A priori, j'ai tendance à partager l'avis émis plus haut : un auto qui rend le code moins compréhensible ~bof, mais dans des cas spécifiques : template incompréhensible, lambda, où ce genre de chose : template <class T, class U> auto add(T t, U u) -> decltype(t + u) alors là, oui.

  11. #31
    Membre éclairé

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2007
    Messages
    373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2007
    Messages : 373
    Points : 764
    Points
    764
    Par défaut
    A voir aussi que ça va compliquer la tache des IDE, qui devront eux aussi deduire le type d'une variable "auto".

  12. #32
    Alp
    Alp est déconnecté
    Expert éminent sénior

    Avatar de Alp
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    8 575
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 8 575
    Points : 11 860
    Points
    11 860
    Par défaut
    Il y a moyen de faire ça pas trop difficilement pour le coup. Du moins, s'ils ont accès aux internals du compilo, ils ont juste à appeler la portion du compilo qui fait l'inférence de type. Si tous les compilos proposent une option pour juste déduire le type d'une expression, ça devrait aller. Mais bon à voir si une telle chose se répandra ou pas ...

  13. #33
    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 344
    Points
    3 344
    Par défaut
    En tout cas ça ne sera pas un problème pour Visual Studio 10, ils ont justement refait complètement leur façon de gérer Intellisense de manière à "facilement" avoir les infos sur lesquelles le compilateur (aussi "nettoyé" du coup) va se baser.
    Sources : le blog de la VC++ team, notemment et .

  14. #34
    Alp
    Alp est déconnecté
    Expert éminent sénior

    Avatar de Alp
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    8 575
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 8 575
    Points : 11 860
    Points
    11 860
    Par défaut
    Citation Envoyé par Klaim Voir le message
    En tout cas ça ne sera pas un problème pour Visual Studio 10, ils ont justement refait complètement leur façon de gérer Intellisense de manière à "facilement" avoir les infos sur lesquelles le compilateur (aussi "nettoyé" du coup) va se baser.
    Sources : le blog de la VC++ team, notemment et .
    On en discutait justement avec Goten hier soir après ton message et on disait justement que les IDE qui font aussi le compilateur qui va avec vont avoir beaucoup moins de mal. A voir si gcc va offrir une option pour faire ça facilement

  15. #35
    Membre éclairé
    Avatar de Florian Goo
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    680
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2008
    Messages : 680
    Points : 858
    Points
    858
    Par défaut
    Les autres IDE pourraient utiliser… disons… une bibliothèque d'analyse de code source C++ stricte. Le genre analyseur strict, qui serait capable de jouer le rôle de front-end de compilateur.

    Aaah, si seulement ça pouvait exister.
    Cours : Initiation à CMake
    Projet : Scalpel, bibliothèque d'analyse de code source C++ (développement en cours)
    Ce message a été tapé avec un clavier en disposition bépo.

  16. #36
    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 344
    Points
    3 344
    Par défaut
    Oui ça serait tellement utile. Si seulement quelqu'un pouvait s'ateler a la tache

  17. #37
    Membre chevronné
    Avatar de Goten
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 580
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 580
    Points : 2 205
    Points
    2 205
    Par défaut
    Citation Envoyé par Florian Goo Voir le message
    Les autres IDE pourraient utiliser… disons… une bibliothèque d'analyse de code source C++ stricte. Le genre analyseur strict, qui serait capable de jouer le rôle de front-end de compilateur.

    Aaah, si seulement ça pouvait exister.




    ps : je parie, qu'ils attendraient d'une telle bibliothèque... qu'elle soit documentée
    "Hardcoded types are to generic code what magic constants are to regular code." --A. Alexandrescu

  18. #38
    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 017
    Points
    13 017
    Par défaut
    Citation Envoyé par Goten Voir le message
    ps : je parie, qu'ils attendraient d'une telle bibliothèque... qu'elle soit documentée
    Et qui soit l'occasion de superbes tutos pour la rubrique C++

  19. #39
    Expert confirmé

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2007
    Messages
    1 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 895
    Points : 4 551
    Points
    4 551
    Par défaut
    gcc peut sortir un AST, et différents projets open source peuvent récupérer cet AST pour au choix une analyse (XOgastan) ou une sortie dans un format plus compréhensible (GCC-XML). Reste à utiliser ces outils dans les IDE courant (Faire tourner gccxml en tâche de fond requiert pas mal de puissance, notamment si le fichier C++ compilé inclut beaucoup de fichiers de la SCL par exemple. Le plus simple pour un IDE reste quand même d'avoir un parseur C++ intégré).
    [FAQ des forums][FAQ Développement 2D, 3D et Jeux][Si vous ne savez pas ou vous en êtes...]
    Essayez d'écrire clairement (c'est à dire avec des mots français complets). SMS est votre ennemi.
    Evitez les arguments inutiles - DirectMachin vs. OpenTruc ou G++ vs. Café. C'est dépassé tout ça.
    Et si vous êtes sages, vous aurez peut être vous aussi la chance de passer à la télé. Ou pas.

    Ce site contient un forum d'entraide gratuit. Il ne s'use que si l'on ne s'en sert pas.

Discussions similaires

  1. [sgbd] Backup de tables MySQL auto, qqun sait ???
    Par Joelindien dans le forum SGBD
    Réponses: 31
    Dernier message: 26/05/2003, 17h59
  2. Pb d'auto-incrément sur une table v7
    Par Nivux dans le forum Paradox
    Réponses: 9
    Dernier message: 26/12/2002, 12h05
  3. ca ne fonctionne pas (generateur auto-incrémentant)
    Par tripper.dim dans le forum SQL
    Réponses: 7
    Dernier message: 26/11/2002, 00h10
  4. Un Sender peut-il s'auto-détruire lors d'un onClick?
    Par Flo. dans le forum C++Builder
    Réponses: 2
    Dernier message: 17/07/2002, 10h31
  5. Réponses: 8
    Dernier message: 17/05/2002, 09h08

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