J'ai essayé de faire ce truc simple et Visual Studio 2008 ne semble pas l'aimer.Fonction de modèle avec les paramètres de type dépendants dans la classe de modèle
template <class CharType>
class SomeClass
{
public:
template <class T1, class T2>
static bool SomeOperator(const typename T1::const_iterator& p_Begin1,
const typename T1::const_iterator& p_End1,
const typename T2::const_iterator& p_Begin2,
const typename T2::const_iterator& p_End2)
{
// do some stuff..
}
};
Et l'appeler avec quelque chose comme ceci:
std::wstring a;
OtherString b;
SomeClass<wchar_t>::SomeOperator(a.begin(), a.end(), b.begin(), b.end());
Ce que je reçois est des erreurs du compilateur indiquant qu'il ne peut pas en déduire le paramètre de modèle T1 et T2
error C2783: 'bool SomeClass<CharType>::SomeOperator(const T1::const_iterator &,const T1::const_iterator &,const T2::const_iterator &,const T2::const_iterator &)' : could not deduce template argument for 'T1'
error C2783: 'bool SomeClass<CharType>::SomeOperator(const T1::const_iterator &,const T1::const_iterator &,const T2::const_iterator &,const T2::const_iterator &)' : could not deduce template argument for 'T2'
Est-ce que la compilation de code lorsque vous définissez explicitement le paramètre de modèle? Donc, comme 'SomeClass :: SomeOperator (a.begin(), a.end(), b.begin(), b.end());' –
pkit