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

Boost C++ Discussion :

result_of et functor


Sujet :

Boost C++

  1. #21
    Membre très actif
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    688
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 688
    Par défaut
    dans ce cas pourquoi est ce que Action1(void) ne match pas non plus ?

  2. #22
    Membre Expert
    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 : 45
    Localisation : France, Essonne (Île de France)

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

    Informations forums :
    Inscription : Septembre 2002
    Messages : 918
    Par défaut
    f(void) est un synonime de f(), void n'est jamais passé comme type dans ce cas

  3. #23
    Membre très actif
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    688
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 688
    Par défaut
    en passant un int j'ai le même message du compilo, pourtant j'ai l'impression que le matching est nickel

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
     
    template<bool f,typename Action,typename P> struct F{ };
     
    template<typename Func,typename Arg>
    struct F<true,Func(Arg)>
    {
    	typedef Func exec;
    	typedef Arg param;
    };
     
    struct Action{
    	bool operator()(int){return true;}
    };
     
     
    int main() 
    {  
    	F<1, Action(int)> f;
     
    	system("pause");
    }

  4. #24
    Membre Expert
    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 : 45
    Localisation : France, Essonne (Île de France)

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

    Informations forums :
    Inscription : Septembre 2002
    Messages : 918
    Par défaut
    ta definition est fausse. Ceci compile :

    http://codepad.org/EQjE3b0S

    tu melanges le nbr de parametres template de ta classe et le nombre de type pour les définir

  5. #25
    Membre très actif
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    688
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 688
    Par défaut
    ah ok je pensais pas qu'on pouvait modifier le nombre ou type de paramètre d'une classe template, là on passe de bool+typename à typename+typename c'est assez déroutant

  6. #26
    Membre Expert
    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 : 45
    Localisation : France, Essonne (Île de France)

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

    Informations forums :
    Inscription : Septembre 2002
    Messages : 918
    Par défaut
    non, c'est une specialisation partielle, tu definie ce qui te faut pour specialiser

  7. #27
    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
    L'endroit que tu dois regarder pour les paramètres de ta classe, c'est "struct F<true, Func(Arg)>", pas "template" au-dessus.

    Ce que tu mets après "template" c'est "bon, je vais avoir besoin de ces choses là", pas "je vais donner ces choses là en paramètre de ma classe telles quelles".

    C'est un peu comme pour ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    template < template <class> class Container, class Element>
    void f(const Container<Element>& c)
    T'as qu'un argument dans ta fonction, mais t'as deux paramètres qui rentrent en jeu.

    Quand tu spéciales partiellement de manière non triviale, t'introduis souvent d'autres genres de paramètres, mais ce ne sont pas forcément ceux que tu passeras tels quels à ta classe.

  8. #28
    Membre très actif
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    688
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 688
    Par défaut
    OK, y a pas de bons liens qui traînent sur le net qui traitent de ce sujet ? je trouve rien d'extra via notre ami google

  9. #29
    Membre Expert

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2004
    Messages
    1 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 1 391
    Par défaut
    http://cpp.developpez.com/cours/cpp/?page=page_14#LXIV

    Ca devrait suffire à comprendre la spécialisation des templates.

  10. #30
    Membre très actif
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    688
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 688
    Par défaut
    la limite de ton lien c'est qu'il n' y a pas d'exemple où le nombre de paramètre de la classe spécialisé apparaissant à droite du nom de la classe est inférieur aux nombres de paramètres figurant dans la déclaration de la classe template non spécialisée...

    c'est finalement précisément cette règle que je découvre ici

  11. #31
    Membre Expert

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2004
    Messages
    1 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 1 391
    Par défaut
    On notera que le nombre des paramètres template déclarés à la suite du mot clé template peut varier, mais que le nombre de valeurs fournies pour la spécialisation est toujours constant (dans l'exemple précédent, il y en a trois).
    Les exemple sont fait dans l'auter sens, mais ca marche dans les deux, il n'y a rien de compliquer la-dedans, ou alors précise ce que tu veux savoir, parce que là je vois pas !

    Le cas que tu veux arrive dès que tu auras un type composé d'autre type, ou du même grene. (Comme les types des fonctions ou les types d'un tableau C-like)

  12. #32
    Membre très actif
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    688
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 688
    Par défaut
    ok j'ai "buggé" mon dernier post est faux, justement le nombre match toujours....

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    template< bool Action,typename P> struct F{ }; // =2
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    struct F<true,Func(Arg)> //=2
    autant pour moi

  13. #33
    Membre très actif
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    688
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 688
    Par défaut
    Citation Envoyé par guillaume07 Voir le message
    ok j'ai "buggé" mon dernier post est faux, justement le nombre match toujours....

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    template< bool Action,typename P> struct F{ }; // =2
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    struct F<true,Func(Arg)> //=2
    autant pour moi
    @Flob90 : ce que tu m'avais déjà dit dans un autre post

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. Problème de functor
    Par Kromagg dans le forum C++
    Réponses: 6
    Dernier message: 10/01/2009, 22h17
  2. Problème Functor + Numerical Recipes
    Par Jeromnimo dans le forum C++
    Réponses: 8
    Dernier message: 03/07/2008, 10h17
  3. Réponses: 1
    Dernier message: 15/01/2008, 08h11
  4. Problème avec functor
    Par vandamme dans le forum C++
    Réponses: 7
    Dernier message: 19/04/2007, 01h05
  5. [VB6] Functors ?
    Par Original Prankster dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 19/01/2007, 16h19

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