说我有一个模板类:在C++中专门调用函数的非专用版本?
template <typename T>
class foo {
void do_someting(T obj) {
// do something generic...
}
};
,我想专门do_something,但在它我想称之为“正常” do_something功能:
template<>
void foo<MyObj>::do_something(MyObj obj) {
// do something specific...
// and ALSO do something generic!
}
是有办法参考到我的专门功能内的do_something的正常版本?或者我只需要复制代码?我知道我可以用这样的方式来重构foo,这样我就不会有这个确切的问题,但是因为它发生了,我不能真正修改“真正的”foo,因为它是严重共享的代码。)
对于MyObj类型,没有“do_something”的“正常”版本 - 模板专门化的全部效果是*替换*您将从基本模板获得的实例化,并且使用类/函数在专业化中定义。 – 2010-11-04 17:11:21
可能的重复[如何获得一个专门的模板来使用非特化版本的成员函数?](http://stackoverflow.com/questions/347096/how-can-i-get-a-specialized-template-使用非特定版本的成员) – 2010-11-04 17:12:37
对,但编译器知道foo中的代码 :: do_something,没有理由为什么它不能让我以某种方式引用它。我完全愿意相信这种语言功能根本不存在,但是---这正是我想要发现的。 –
2010-11-04 17:13:41