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 :

résolution de type template template pour une fonction template libre


Sujet :

Langage C++

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    118
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 118
    Points : 158
    Points
    158
    Par défaut résolution de type template template pour une fonction template libre
    Bonjour,

    Soit le code suivant :
    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
    template<template<typename T> class Container, typename T>
    class MyTraits
    {
    	typedef Container<T> type;
    	typedef Container<T>& reference;
    };
     
    template<typename T>
    class Bar{};
     
    template<template<typename T> class Container, typename T>
    void foo(MyTraits<Container, T>::type value){}
     
    int main(int argc, char** argv)
    {
    	Bar<int> bar;
    	foo<Bar, int>(bar);
    	return 0;
    }
    Lors de la compilation, j'ai l'erreur suivante :
    "erreur:no matching function for call to foo(Bar<int>&)"

    Ma question est :
    Est ce réalisable?

  2. #2
    Membre expérimenté Avatar de Trademark
    Profil pro
    Inscrit en
    Février 2009
    Messages
    762
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 762
    Points : 1 396
    Points
    1 396
    Par défaut
    Salut,

    Ceci compile chez moi avec g++, j'ai ajouté un typename et mis en public ta classe de trait ;

    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
     template<template<typename T> class Container, typename T>
     struct MyTraits
     {
       typedef Container<T> type;
       typedef Container<T>& reference;
     };
     
     template<typename T>
     class Bar{};
     
     template<template<typename T> class Container, typename T>
     void foo(typename MyTraits<Container, T>::type value){}
     
     int main(int argc, char** argv)
     {
       Bar<int> bar;
       foo<Bar, int>(bar);
       return 0;
     }
    Mais honnêtement, je ne vois pas l’intérêt de faire ça…

Discussions similaires

  1. Réponses: 3
    Dernier message: 13/10/2012, 15h02
  2. Réponses: 9
    Dernier message: 10/05/2010, 21h35
  3. Définition de méthodes pour une classe template
    Par Pragmateek dans le forum Langage
    Réponses: 13
    Dernier message: 20/12/2008, 00h46
  4. Template optimisé pour une largeur de 1024px
    Par seabird dans le forum Webdesign & Ergonomie
    Réponses: 2
    Dernier message: 15/11/2006, 18h29
  5. Pointeur sur une fonction template
    Par Progs dans le forum Langage
    Réponses: 2
    Dernier message: 15/02/2006, 20h25

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