J'ai une classe de caractères que j'ai besoin de spécialiser (et de spécialiser partiellement) plusieurs fois.Spécialisation de modèle partiel ambigu
Certaines spécialisations partielles se chevauchent:
template< typename T > struct C { };
template< typename T1, typename T2 > struct TRAIT { };
template< typename T > struct TRAIT< T, T > { };
template< typename T1, typename T2 > struct TRAIT< C<T1>, C<T2> > { };
int main() {
// ERROR! could be both TRAIT<T,T> [with T = C<int>]
// and TRAIT<T1,T2> [with T1 = T2 = int]
TRAIT< C<int>, C<int> > foo;
return 0;
};
Comment suis-je censé obtenir le même résultat avec un code de travail?
Je suis allé fou avec enable_if
et is_same
, je ne suis même pas sûr que plus il est la bonne façon ...
Qu'essayez-vous vraiment de faire **? –
Vous devez éviter les chevauchements. C'est la réponse. La question est celle posée par Karl: Qu'est-ce que vous essayez vraiment de faire? –
Je suis désolé mate, mais vous utilisez faux C++. Repensez votre solution et/ou postez le problème réel pour obtenir une réponse réelle. – Squirrelsama