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 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
    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 chevronné
    Avatar de Goten
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 580
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 580
    Points : 2 205
    Points
    2 205
    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é.
    "Hardcoded types are to generic code what magic constants are to regular code." --A. Alexandrescu

  5. #5
    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
    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. Paramètre par défaut d'une methode/fonction template
    Par valefor dans le forum Langage
    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