Une petite question sur les templates:
j'ai une methode :
template <typename T>
T getValue(const std::string &group, const std::string &key, const T & valueByDefault)
le probleme c'est que j'aimerais faire plutot ca :
template <typename T>
T getValue(const std::string &group, const std::string &key, const T & valueByDefault = T())
càd que la default value a une valeur par defaut
Le probleme c'est que VC++ 6 me sort une erreur
error C2065: 'T' : undeclared identifier
quand je rajoute le = T()
du coup j'ai rien trouvé d'autre comme solution que de surcharger la 1ere methode par un
template <typename T>
T getValue(const std::string &group, const std::string &key)
{
...
if (pasTrouve)
return T();
}
ce qui n'est pas tres elegant, je vous le concede.
Ce qui me surprend le plus c'est que le meme compilo, compile sans probleme ca (tiré de la declaration de la map de la stl):
explicit map(const _Pr& _Pred = _Pr(), const _A& _Al = _A())
: _Tr(_Pred, false, _Al) {}
Donc si qcq a une idee jsuis preneur.