我四處尋找一個很好的解決方案,以避免每個模板類的spezialization上的代碼重複。避免多重C++模板spezialization上的代碼重複
下面是一個例子代碼:
template<class T>
class C
{
int foo();
}
現在對於違約的定義:
template<class T>
C<T>::foo() { return 0; }
現在特殊的模板
template<> C<int>::foo() { ... do a lot of stuff and return n .... }
template<> C<double>::foo() { ... do a lot of stuff and return n .... }
template<> C<int>::foo() { ... do a lot of stuff and return n .... }
的spezailization現在我不得不重複代碼爲spezilization。但通常它是相同的代碼。
我的問題是: 什麼是避免代碼重複的最佳解決方案,以及如何隱藏實現?也許通過使用noname命名空間或impl命名空間?
親切的問候, 彼得以避免重複代碼使用一個基類來處理通用實現
是否也可以將bar()隱藏在頭文件中的未命名名稱空間內? – Peter
@Peter不幸的是不適用於模板。匿名(未命名)命名空間與它們所在的編譯單元相關並且是私有的。由於模板類沒有(主)編譯單元,恐怕這是行不通的。 –