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

C++ Discussion :

Le C++ Expressif n° 6 - Amusons-nous avec la composition de fonctions


Sujet :

C++

  1. #1
    Expert éminent sénior

    Avatar de Francis Walter
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2012
    Messages
    2 315
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Bénin

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

    Informations forums :
    Inscription : Février 2012
    Messages : 2 315
    Points : 26 889
    Points
    26 889
    Par défaut Le C++ Expressif n° 6 - Amusons-nous avec la composition de fonctions


    Voici la suite (le n° 6) de la série des tutoriels sur le C++ Expressif : C++ Expressif - La composition de fonctions.

    Pour rappel, la partie 1 était publié ici et la page regroupant tous les tutoriels du C++ Expressif est ici.
    Vous avez envie de contribuer au sein du Club Developpez.com ?

    Vous êtes passionné, vous souhaitez partager vos connaissances en informatique, vous souhaitez faire partie de la rédaction.
    Il suffit de vous porter volontaire et de nous faire part de vos envies de contributions :
    Rédaction d'articles/cours/tutoriels, Traduction, Contribution dans la FAQ, Rédaction de news, interviews et témoignages, Organisation de défis, de débats et de sondages, Relecture technique, Modération, Correction orthographique, ...etc.
    Vous avez d'autres propositions de contributions à nous faire ? Vous souhaitez en savoir davantage ? N'hésitez pas à nous approcher.

  2. #2
    Membre averti Avatar de RPGamer
    Homme Profil pro
    Ingénieur en systèmes embarqués
    Inscrit en
    Mars 2010
    Messages
    168
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur en systèmes embarqués

    Informations forums :
    Inscription : Mars 2010
    Messages : 168
    Points : 395
    Points
    395
    Par défaut
    Tutoriel très intéressant, mis à part ces affreux typedef à bannir en C++.

    Après quand à le mettre en pratique, tout cela me parait particulièrement verbeux et particulièrement compliqué ce qui ne rend pas ce type de programmation très attractif.

  3. #3
    Expert confirmé Avatar de AoCannaille
    Inscrit en
    Juin 2009
    Messages
    1 413
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 1 413
    Points : 4 734
    Points
    4 734
    Par défaut
    Citation Envoyé par RPGamer Voir le message
    Tutoriel très intéressant, mis à part ces affreux typedef à bannir en C++.
    Quel est le problème avec les typedef en C++? Je comprends qu'il vaut mieu préféré l'utilisation de namespace pour les types définis, mais mis à part cet idéologie, est-ce qu'il y a une contre-indication technique à l'utilisation des typedef en C++?

  4. #4
    Expert éminent sénior

    Avatar de dragonjoker59
    Homme Profil pro
    Software Developer
    Inscrit en
    Juin 2005
    Messages
    2 031
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Bas Rhin (Alsace)

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

    Informations forums :
    Inscription : Juin 2005
    Messages : 2 031
    Points : 11 379
    Points
    11 379
    Billets dans le blog
    10
    Par défaut
    On n'écrit plus typedef int MyInt; mais using MyInt = int;.

    Je pense que c'est de là que vient la remarque de RPGamer
    Si vous ne trouvez plus rien, cherchez autre chose...

    Vous trouverez ici des tutoriels OpenGL moderne.
    Mon moteur 3D: Castor 3D, presque utilisable (venez participer, il y a de la place)!
    Un projet qui ne sert à rien, mais qu'il est joli (des fois) : ProceduralGenerator (Génération procédurale d'images, et post-processing).

  5. #5
    Expert confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    1 711
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2012
    Messages : 1 711
    Points : 4 442
    Points
    4 442
    Par défaut
    Citation Envoyé par AoCannaille Voir le message
    Quel est le problème avec les typedef en C++? Je comprends qu'il vaut mieu préféré l'utilisation de namespace pour les types définis, mais mis à part cet idéologie, est-ce qu'il y a une contre-indication technique à l'utilisation des typedef en C++?
    Pas de contre-indication non.

    J'aime beaucoup les typedef perso : c'est un mot clef qui n'a qu'une seule signification, contrairement à using.
    M'enfin ça change pas grand chose, tant qu'on utilise la même chose partout.

  6. #6
    Membre averti Avatar de RPGamer
    Homme Profil pro
    Ingénieur en systèmes embarqués
    Inscrit en
    Mars 2010
    Messages
    168
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur en systèmes embarqués

    Informations forums :
    Inscription : Mars 2010
    Messages : 168
    Points : 395
    Points
    395
    Par défaut
    Il y a un effort dans le standard pour rendre les mécanismes du langage statiquement évaluable (ça n'entre pas dans ce cadre mais le constexpr en est un exemple), compatibles avec les templates et pour systématiser un typage en rvalue et non plus en lvalue (introduction de using et auto). Exemple pour le dernier cas:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    auto x = 42;
    auto y = 42f;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    auto var = init;
    auto f() { ... }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    auto var = type{init};
    auto f() -> type;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    using alias = type;
    template<class T>
    using alias = type<T>;

  7. #7
    Expert éminent sénior
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 614
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 614
    Points : 30 626
    Points
    30 626
    Par défaut
    Salut,
    Citation Envoyé par AoCannaille Voir le message
    Quel est le problème avec les typedef en C++? Je comprends qu'il vaut mieu préféré l'utilisation de namespace pour les types définis, mais mis à part cet idéologie, est-ce qu'il y a une contre-indication technique à l'utilisation des typedef en C++?
    En fait, l'usage de typedef est déprécié depuis l'arrivée de C++11 (qui date quand même d'il y a 5 ans, ou presque ) au profit de l'utilisation de using qui apporte d'avantage de flexibilité.

    L'idée de base du comité est de nous permettre de définir des alias template, ou, si tu préfères, des alias de type sur (par exemple) des spécialisations partielles de classes template nécessitant plusieurs paramètres template. Ainsi, nous pouvons créer un alias de type template nommé Brol sous une forme proche de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    template <typename T> 
    using Brol = UnType<T, std::string>;
    Et, grâce à cela, nous pourrions utiliser Brol<char> bc;ou Brol<unsigned int> bui; en sachant que cela correspondrait effectivement à UnType<char, std::string> bc (respectivement UnType<unsigned int, std::string> bui;).

    Or, typedef est un mot clé issu du C et que l'on ne pouvait décemment pas modifier la manière dont il se comporte sans apporter de très sérieuses incompatibilités supplémentaires. C'est la raison pour laquelle le comité a décidé d'utiliser un autre mot clé (qui existait d'ailleurs déjà). Et, comme les possibilités offertes par le mot clé using recouvrent celle de typedef, il semblait "logique et cohérent" d'inciter les gens à préférer using à typedef.

    Si bien que, à termes, l'utilisation de typedef a de grandes chances d'être rendue totalement obsolète (ne l'est-il déjà pas en C++14 d'ailleurs ), même si ce mot clé restera très certainement dans le langage "juste pour assurer la compatibilité avec C".
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  8. #8
    Expert confirmé Avatar de AoCannaille
    Inscrit en
    Juin 2009
    Messages
    1 413
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 1 413
    Points : 4 734
    Points
    4 734
    Par défaut
    merci à tous pour vos réponses
    je me coucherais moins con ce soir!

Discussions similaires

  1. Amusons nous avec les sélécteurs
    Par okoweb dans le forum jQuery
    Réponses: 3
    Dernier message: 12/09/2011, 11h50
  2. [VBA-A]Amusons nous un peu avec des mots.
    Par Miss Ti dans le forum Access
    Réponses: 6
    Dernier message: 24/07/2006, 21h13
  3. [PL SQL] Problème avec 'case' dans une fonction
    Par divail dans le forum Oracle
    Réponses: 14
    Dernier message: 13/03/2006, 15h50
  4. Comment fait ça avec les pointeurs, la fonction et les struc
    Par mahdianis dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 24/02/2006, 18h01
  5. Problème avec les touches CTRL & FONCTIONS
    Par bidule999 dans le forum Applications et environnements graphiques
    Réponses: 1
    Dernier message: 03/12/2004, 09h52

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