Bonjour,
J'ai créé une fonction template prenant un argument facultatif donc voici le prototype :
validator est simplement une classe héritant de std::unary_function :
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>());
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
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; } };
Là le compilateur s'emballe et me retourne :
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>());
Quelqu'un verrait-il mon erreur ?error: default arguments are only permitted for function parameters
Merci.
Partager