2番目のテンプレートのテンプレートパラメータとして別のテンプレートを継承するテンプレートがあります。 スタティック関数のテンプレートを使用したテンプレートの特殊化
template<class T> class A
{
public:
static void foo();
};
template<class T> class B : public A<B>
{
};
は、今私はBとの特殊なクラスの静的関数を実装したいのですが、Bと専門ません:継承されたテンプレートは、静的な関数を定義します。しかし、私はテンプレートを宣言する方法を理解することはできません。私はこれが可能かどうかも分かりません。
template<class T> void A<B<T>>::foo()
{
}
しかし、これはエラーを与える:私の最初の試みだった
"Nested name specifier 'A<B<T>>::" for declaration does not refer into a class, class template or class template partial specialization"
私が前に「テンプレート<>」を追加するなどの異なるものを試していないが、働いていたそれらのどれもしました。私はこれをコンパイルすることができる午前:
template<> void A<B<int>>::foo()
{
}
だけでなく、このよう:
template<class T> void A<T>::foo()
{
}
これは部分的な特殊化の試みですか?私の最初の印象は「いいえ」です(複数のパラメータを持つテンプレートはありません)。むしろ、私は特殊化されていない別のテンプレートでテンプレートを特化したいと考えています。これは可能ですか?もしそうなら、正しい構文は何ですか?
ありがとう、私はただ修正しました。私は、Bを特殊化するのではなく、Bの特殊化のための静的関数を実装したいと考えています。 – sweatervest