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.