J'ai quatre fonctions:appel Ambigu à une fonction
template<class Exception,class Argument>
void allocate_help(const Argument& arg,Int2Type<true>)const;
template<class Exception,class Argument>
std::nullptr_t allocate_help(const Argument& arg,Int2Type<false>)const;
template<class Exception>
void allocate_help(const Exception& ex,Int2Type<true>)const;
template<class Exception>
std::nullptr_t allocate_help(const Exception& ex,Int2Type<false>)const;
mais quand je l'appelle:
allocate_help<std::bad_alloc>(e,Int2Type<true>()); //here e is of a std::bad_alloc type
Je reçois une erreur:
Erreur 3 Erreur C2668: appel ambigu à une surcharge Fonction Pourquoi?
+1, mais ils n'ont pas exactement la même signature, la deuxième version est un sous-ensemble de la première, où les types 'Exception' et' Argument' sont les mêmes. Tout appel pour lequel l'argument de modèle 'Exception' et le type du premier argument de l'appel de fonction ne seront pas ambigus. –
Vous avez raison, je vais modifier ma réponse. – ronag
Comment 'Int2Type' correspond 'Int2Type '? –
ybungalobill