クラスを使用した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)不可能な場合、なぜですか?(つまり、技術的な問題)