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 :

sp�cification template et param�tre par d�faut


Sujet :

C++

  1. #1
    Invit�
    Invit�(e)
    Par d�faut sp�cification template et param�tre par d�faut
    Bonjour,

    J'ai cr�� une fonction template prenant un argument facultatif donc voici le prototype :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
     
    template<class T>
    bool get(T &variable, std::string &message, validator<T> validator = validator<T>());
    validator est simplement une classe h�ritant de std::unary_function :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    template<class T>
    class validator : public std::unary_function<T,bool>
    {
        public:
        validator() : std::unary_function<T,bool>()
        {
        }
     
        virtual bool operator() (T &v)
        {
            return true;
        }
    };
    La compilation se d�roule sans erreur, jusqu'� ce que je d�finisse une sp�cification templte de la fonction get :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
     
    template<>
    bool get<std::string>(std::string &variable, const std::message, validator<std::string> validator = validator<std::string>());
    L� le compilateur s'emballe et me retourne :

    error: default arguments are only permitted for function parameters
    Quelqu'un verrait-il mon erreur ?

    Merci.

  2. #2
    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
    y a pas d'erreur. On ne peut pas avoir de specialisation de fonction tempalte. Il te faut faire une surcharge

  3. #3
    Invit�
    Invit�(e)
    Par d�faut
    On ne peut pas avoir de sp�cification d�s lors que l'un des param�tre est un template aussi ?

  4. #4
    Membre Expert
    Avatar de Goten
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 580
    D�tails du profil
    Informations personnelles :
    �ge : 35
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 580
    Par d�faut
    Citation Envoy� par Joel F Voir le message
    y a pas d'erreur. On ne peut pas avoir de specialisation de fonction tempalte. Il te faut faire une surcharge
    Hum, IIRC c'est les sp�cialisations partielles de fonctions templates qui sont interdites. Les sp�cialisations compl�tes sont elles, autoris�.

  5. #5
    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
    ca devient pas *juste* des overload ?

Discussions similaires

  1. [C#] Param�tre par d�faut dans une fonction
    Par RobinJulie dans le forum Windows Forms
    R�ponses: 5
    Dernier message: 18/01/2012, 14h07
  2. R�ponses: 4
    Dernier message: 03/08/2007, 11h22
  3. Param�tre par d�faut class templates
    Par Alp dans le forum C++
    R�ponses: 2
    Dernier message: 26/02/2006, 02h06
  4. R�ponses: 2
    Dernier message: 19/03/2005, 17h09

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