あなたが持っているとしましょう:
template<class T>
class A {
template<class T1>
void foo(const T1& t1) {}
//
// Lots of other definitions (all templated)
//
};
そして、あなたは専門化したいのですがfoo(const T1&)
、専門家のためだけですA<bool>
。このような:
template<>
class A<bool> {
template<class T1>
void foo(const T1& t1) {
// Code for specialized A<boo>::foo
}
//
// Repeating the former definitions, how to avoid this ??
//
};
しかし、これを機能させるには、クラステンプレートで定義されているすべてのコードを複製し、class A
それをに再度含める必要がありclass A<bool>
ます。
メンバーの専門分野のみを定義しようとしました。
template<>
void A<bool>::template<class T1> foo(const T1&) {}
これも機能しません:
template <class T1> void A<bool>::foo(const T1&) {}
しかし、コンパイラはそれを好きではありません。このコードの重複に対処する方法は何ですか?