如果我有:
template <class T>
class A
{
static void f()
{
// not using template parameter T
}
};
在这种情况下,
A<int>::f()
与A<double>::f()
相同,但是我不想通过template参数调用A::f()
。是否有允许调用f()
但不需要template参数的语法? 最佳答案
编译器不知道A<T>::f()
不使用类型参数T
。因此,无论何时使用f
,都必须给编译器指定类型。
但是,当我设计模板类时,我注意到某些成员/方法不依赖模板参数,因此我经常将其移至非模板基类。
class A_Base {
public:
static void f();
};
template <class T> class A : public A_Base {
// ...
};
现在
A_Base::f()
,A<int>::f()
和A<double>::f()
确实是同一回事。