我四处寻找一个很好的解决方案,以避免每个模板类的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不幸的是不适用于模板。匿名(未命名)命名空间与它们所在的编译单元相关并且是私有的。由于模板类没有(主)编译单元,恐怕这是行不通的。 –