template<typename T>
class vec3
{
public:
typename T type_t;
T x;
T y;
T z;
};
template<typename T>
struct numeric_type_traits_basic_c
{
typedef T type_t;
typedef T scalar_t;
};
template<typename T>
struct numeric_type_traits_vec3_c
{
typedef T type_t;
typedef typename T::type_t scalar_t;
};
typedef numeric_type_traits_basic_c<int> int_type_traits;
typedef numeric_type_traits_vec3_c< vec3<int> > vec3_int_type_traits;
caracteres de tipo escalar y vector, la única diferencia es que el tipo escalar, para un vector, es el tipo de su elemento. Funciona bien.rasgos de tipo especialización
Pero me gustaría poder usar el mismo nombre para esas dos clases.
template<typename T>
struct numeric_type_traits_c
{
typedef T type_t;
typedef ????? scalar_t;
};
Sé que esto es posible hacerlo si la clase es explícitamente especializado para cada tipo que necesito: int, float, vec3, vec3 ...
Eso es un montón de duplicación ... ¿Cómo ¿Puedo mantener la simplicidad del primer bit de código pero tener el mismo nombre de clase al mismo tiempo?
La intención detrás del rasgo de tipo es evitar eso ya que el rasgo de tipo se supone que debe proporcionarle dicha información –