我试图减少和简化一些可怕的嵌套和过度专用的模板化 C++ 代码。为此,我希望能够声明依赖于函数或类已实例化的模板类型的成员类型。
将以下通用类模板作为生成的模板特化。“a”的类型取决于实例化类型。
template <typename Float> class A;
template <>
class A<double> {
double a;
}
};
template <>
class A<float> {
float a;
}
};
template <>
class A<short> {
float a;
}
};
除了 'a' 的类型、模板类型到 double->double、float->float 和 short->float 类型的映射之外,这些类是相同的。有没有办法简单地封装这个映射以允许只编写一次类?
我想我想写类似下面的东西,但我不知道这是否可能。
typedef double Float2<double>;
typedef float Float2<float>;
typedef float Float2<short>;
template <typename Float>
class A {
Float2<Float> a;
}
};
注意我正在使用 C++03 并且不能为此目的使用 C++11(我认为 decltype 可能在这里有用,但我不确定)。