說我有一個模板類:在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