【发布时间】:2009-07-10 09:49:58
【问题描述】:
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;
这是标量和向量的类型特征,唯一的区别是向量的标量类型是其元素的类型。工作正常。
但我真的很希望能够为这两个类使用相同的名称。
template<typename T>
struct numeric_type_traits_c
{
typedef T type_t;
typedef ????? scalar_t;
};
我知道如果该类针对我需要的每种类型明确专门化,这是可能的:int、float、vec3、vec3...
这有很多重复...如何保持第一段代码的简单性但同时具有相同的类名?
【问题讨论】: