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 :

Utilité de récupérer le type d'un template


Sujet :

Langage C++

  1. #1
    Membre chevronné Avatar de Flo.
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mai 2002
    Messages : 379
    Par défaut Utilité de récupérer le type d'un template
    Bonjour

    Dans quelle situation est-il utile de pouvoir récupérer le type du template ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    template <class T>
    class A
    {
    typedef T type; // comment et à quoi cela est utile ?
    };
    Pour l'utiliser (avec VC++6) je ne sais pas faire autrement que de préciser le type :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    A<int>::type myvar = 5;
    Mais je doute que ce soit l'intérêt....

    Pouvez-vous me donner un exemple où cela est utile ?

    Merci.

    Flo.

  2. #2
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 450
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 450
    Par défaut
    Citation Envoyé par Flo. Voir le message
    Bonjour

    Dans quelle situation est-il utile de pouvoir récupérer le type du template ?
    Récupérer le type du template, c'est surtout intéressant à l'intérieur de la déclaration ou la définition de la classe elle-même. C'est même tout l'intérêt des templates.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    template <class T>
    class A
    {
    typedef T type; // comment et à quoi cela est utile ?
    };
    Pour l'utiliser (avec VC++6) je ne sais pas faire autrement que de préciser le type :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    A<int>::type myvar = 5;
    Récupérer un type défini par typedef en dehors de la classe elle-même, par contre, ça peut avoir un intérêt dans le cas de spécialisations de templates pour que type puisse comporter des exceptions dans certains cas et mapper occasionnellement quelque chose d'autre que T. À part ça, je ne vois pas.

  3. #3
    Expert éminent
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 635
    Par défaut
    Salut,

    Ce qu'il faut d'abord comprendre, c'est que ce qui est intéressant avec les fonctions et classes template, c'est que le type générique indiqué peut être... strictement tout et n'importe quoi, y compris... un autre type générique

    D'un autre coté, il faut prendre conscience que l'on peut spécialiser une structure ou une classe template, de manière complete ou partielle, mais que l'on ne peut pas spécialiser une fonction template.

    Pour comprendre toute la puissance et tout l'intérêt de la définition d'un alias de type, et parce que l'explication prendrait énormément de temps, je te conseillerais de t'intéresser aux traits de politique (policy traits)...

    C'est en effet dans cet optique que la définition d'alias de type s'épanouit pleinement
    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

  4. #4
    Alp
    Alp est déconnecté
    Expert confirmé

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

    Informations forums :
    Inscription : Juin 2005
    Messages : 8 575
    Par défaut
    Salut,

    koala01 ne "t'a dit que la moitié des choses" (façon de parler hein, ce n'est pas une critique ). En effet, j'ai écrit un article sur la question que tu te poses, en plus de celui sur les traits/politiques
    Je te renvoie donc vers mon article sur le template rebinding.

  5. #5
    Membre chevronné Avatar de Flo.
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mai 2002
    Messages : 379
    Par défaut
    J'ai lu vos articles ...

    ... et j'en ai appris beaucoup.

    Je comprends l'intérêt de récupérer le type d'un template ... et tout ce que cela entraîne derrière.

    Je ne saurais pas encore comment utiliser tout ce que j'ai lu mais savoir que cela existe est déjà un pas.

    Merci.

    Flo.

  6. #6
    Expert éminent
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 635
    Par défaut
    Tu peux aussi t'intéresser à la bibliothèque loki, qui est une bibliothèque mettant en oeuvre les différents desing patterns, orientée template, et qui manipule énormément les alias de type génériques...

    Les explications aidant, cela devrait t'aider à comprendre toute l'utilité

    (désolé, mais le lien est en Anglais )
    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

  7. #7
    Alp
    Alp est déconnecté
    Expert confirmé

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

    Informations forums :
    Inscription : Juin 2005
    Messages : 8 575
    Par défaut
    Citation Envoyé par koala01 Voir le message
    Tu peux aussi t'intéresser à la bibliothèque loki, qui est une bibliothèque mettant en oeuvre les différents desing patterns, orientée template, et qui manipule énormément les alias de type génériques...

    Les explications aidant, cela devrait t'aider à comprendre toute l'utilité

    (désolé, mais le lien est en Anglais )
    D'ailleurs, Loki a été réalisée "pour un livre" que son auteur a écrit, "Modern C++ Design" de A. Alexandrescu, et mon tutoriel est fortement influencé par le point de vue d'Alexandrescu, tout comme ma façon de concevoir des architectures logicielles l'est
    Ce livre est excellent, donc si les problématiques de modularité, généricité & compagnie t'intéressent, n'hésite pas

  8. #8
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Par défaut
    Citation Envoyé par Flo. Voir le message
    Je ne saurais pas encore comment utiliser tout ce que j'ai lu mais savoir que cela existe est déjà un pas.
    Ca viendra vite
    Dans une bibliothèque matricielle, c'est le seul moyen qu'une fonction libre puisse récupérer de manière statique (à la compilation) le type de données stockées, par exemple pour initialiser correctement le résultat d'une opération.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Template : récupérer le type de base en c++0x
    Par victor_gasgas dans le forum Langage
    Réponses: 13
    Dernier message: 01/06/2011, 10h32
  2. [SQLServer2000][SQL] Récupérer un type de donnée.
    Par maldufleur dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 11/04/2006, 09h01
  3. Récupérer le type d'objet ayant le focus
    Par pilz dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 02/02/2006, 14h31
  4. Récupérer le type et la taille d'une colonne
    Par Progs dans le forum Décisions SGBD
    Réponses: 3
    Dernier message: 23/09/2005, 17h27
  5. Récupérer le type de démarrage d'un service
    Par Nathan dans le forum API, COM et SDKs
    Réponses: 4
    Dernier message: 09/04/2004, 15h07

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