假设你有:
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&) {}
但是编译器不喜欢它。处理这种代码重复的方法是什么?