我目前正在重构一些代码,明确专门化具有两个模板参数的类模板的成员函数。
template <class S, class T>
class Foo
{
void bar();
};
template <class S, class T>
void Foo<S, T>::bar()
{ /* Generic stuff */ }
template <>
void Foo<SomeType, SomeType>::bar()
{ /* Some special function */ }
现在我添加了更多模板参数,所以类现在看起来像这样:
template <class S, class EXTRA0, class T, class EXTRA1>
class Foo
{
void bar();
};
这两个额外的参数只是将 typedef 添加到我的类中,因此运行时功能并没有真正改变。有什么办法可以保留(现在部分)专门的 bar 实现?我似乎无法弄清楚它的语法,我有一种预感,这可能是不可能的。
编辑:我正在寻找类似的东西:
template <class EXTRA0, class EXTRA1>
void foo<SomeType, EXTRA0, Sometype, EXTRA1>::bar()
{
/* specialized implementation */
}
这似乎没有编译..