Mih*_*yan 8 c++ templates static-methods
如果我有:
template <class T>
class A
{
static void f()
{
// not using template parameter T
}
};
Run Code Online (Sandbox Code Playgroud)
在这种情况下A<int>::f()是相同的A<double>::f(),但我不希望A::f()通过模板参数调用.是否有允许调用f()但不需要模板参数的语法?
asc*_*ler 17
编译器不知道A<T>::f()不使用type参数T.因此,您必须在使用时为编译器提供类型f.
但是当我设计一个模板类时,我注意到一些成员/方法不依赖于模板参数,我经常将它们移动到非模板基类.
class A_Base {
public:
static void f();
};
template <class T> class A : public A_Base {
// ...
};
Run Code Online (Sandbox Code Playgroud)
现在A_Base::f(),A<int>::f()和A<double>::f()真正的都是同样的事情.