Tengo una clase de rasgo que necesito especializar (y especializar parcialmente) muchas veces.especialización de plantilla parcial ambigua
Algunas especializaciones parciales se solapan:
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;
};
¿Cómo se supone que voy a obtener el mismo resultado con un código de trabajo?
que se volvió loca con enable_if
y is_same
, ni siquiera estoy seguro de nada que es la manera correcta ...
¿Qué estás ** realmente ** tratando de hacer? –
Debe evitar la superposición. Esa es la respuesta. La pregunta es la pregunta de Karl: ¿Qué estás realmente tratando de hacer? –
Lo siento amigo, pero estás usando C++ incorrecto. Replantea tu solución y/o publica el problema real para obtener una respuesta real. – Squirrelsama