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 :

question sur les template


Sujet :

C++

  1. #1
    Débutant  
    Inscrit en
    Novembre 2006
    Messages
    1 073
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 073
    Points : 217
    Points
    217
    Par défaut question sur les template
    Bonjour

    Dans le livre d'Abrahams, il est écrit:

    The C++ standard requires the template keyword when we use a dependent name that refers to a member template.
    (cf p 49)

    Il donne en fait un exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    template<class F,class X>
    struct twice
    {
      typedef typename F::template apply<X>::type once;
    ...
    };
    En fait, j'aimerais provoquer une erreur en omettant le mot clé template. Comme ici par ex.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    template<class F,class X>
    struct twice
    {
      typedef typename F::apply<X>::type once;
    ...
    };
    Le pb est que ca fonctionne parfaitement. pas d'erreur de compile.

    Ensuite, dans l'annexe page 319.
    "The template keyword is required before dependent names accessing member template via ., -> or :: qualification. in the following example, convert and base depend on T".

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    template<class T> void f(T& x, T*y)
    {
      int n=x.template convert<int>();
      int m=y->template convert<int>();
    }
    Mais si on fait:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    template<class T> void f(T& x, T*y)
    {
      int n=x.template convert<int>();
      int m=y->convert<int>();
    }
    Ca compile parfaitement.

    Pouvez vous me donner un exemple où il est nécessaire de mettre template, devant le dependent name sinon ça plante.

    merci

  2. #2
    Membre chevronné
    Avatar de Joel F
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Septembre 2002
    Messages
    918
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2002
    Messages : 918
    Points : 1 921
    Points
    1 921
    Par défaut
    toi tu compiles avec visual ?

  3. #3
    Débutant  
    Inscrit en
    Novembre 2006
    Messages
    1 073
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 073
    Points : 217
    Points
    217
    Par défaut
    lol, oui pq?

  4. #4
    Membre expérimenté
    Homme Profil pro
    Chercheur
    Inscrit en
    Mars 2010
    Messages
    1 218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chercheur

    Informations forums :
    Inscription : Mars 2010
    Messages : 1 218
    Points : 1 685
    Points
    1 685
    Par défaut
    Bonjour,

    il y a des choses qu'on peut faire avec certains compilateurs et pas avec d'autres.
    Un exemple est donné dans la faq pour le mot-clé typename :
    http://cpp.developpez.com/faq/cpp/?p...LATES_typename

    Personnellement, je n'utilise jamais le mot-clé template pour les accès via .,->,::
    Ca compile quand même sous Visual et GCC et je n'ai aucun warning même en mode verbeux.

  5. #5
    Débutant  
    Inscrit en
    Novembre 2006
    Messages
    1 073
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 073
    Points : 217
    Points
    217
    Par défaut
    C'est a dire qu'a ce niveau de complexité, aucun compilateur ne repère l'erreur.
    que ce soit vc, codewarrior, gcc,...

Discussions similaires

  1. Petite question sur les templates
    Par Ithildine dans le forum Langage
    Réponses: 4
    Dernier message: 18/07/2008, 10h41
  2. Petite Question Sur Les Templates Webparts Pour VS 2k5
    Par sronin1 dans le forum SharePoint
    Réponses: 9
    Dernier message: 19/05/2008, 10h00
  3. Petite question sur les templates
    Par il_a_ri dans le forum Word
    Réponses: 4
    Dernier message: 18/02/2008, 17h57
  4. [XSLT] question sur les templates
    Par ploxien dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 27/10/2006, 12h39

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