#include <iostream>
using namespace std;
template <class T1, class T2>
class A {
public:
void taunt() { cout << "A"; }
};
template <class T1>
class A<T1, T1> {
public:
void taunt() { cout << "B"; }
};
class B {};
class C {};
int main (int argc, char * const argv[]) {
A<B> a;
return 0;
}
2つのパラメータテンプレートを1つのパラメータテンプレートに変換するにはどうすればよいですか?C++部分的特化:このテンプレート<class T1、class T2>をこのテンプレート<class T1>に特化させるにはどうしたらいいですか?
上記のコードは 'A a;'のコンパイラエラーを表示します。 '間違った数のテンプレート引数'のために。
それは次のようになり彼があなたの答えにしたいものを達成するためにデフォルトの引数が必要な理由を追加していいです。この問題は、部分的なテンプレートの特殊化が何をしているのかという誤解によって引き起こされます。元の宣言のテンプレートパラメータの数を減らすことはできません。それは、 "両方のテンプレートの引数が同じであれば、この引数を使用する"ということです。それでも正しい答えは+1です。 :) – vhallac
@vhallac:良いコメント、完了:) – Kleist