我正在尝试使用类进行 C++ 部分模板专业化。这个问题更多的是关于语法而不是语义。其实我想要有如下的东西:
int main()
{
...
Reduce<int, float> r(new int, new float);
Reduce<int> r2(new int); // partial template specialization?
...
}
为了实现上述目标,我尝试了:
template <typename T, typename U>
class Reduce {
public:
Reduce(T *t, U *u) { }
};
template <typename T>
class Reduce<T,T> {
public:
Reduce(T *t) { }
};
使用上面的代码,我不能使用以下语句:
Reduce<int> r2(new int); // error: wrong number of template arguments (1, should be 2)
我仍然必须这样做:
Reduce<int, int> r2(new int);
有人可以解释一下:(1)我怎样才能实现我想要的语法(如果可能)(2)如果不可能,为什么?(即技术问题)