C++中有关函数模板

2025-01-31 00:55:42
推荐回答(2个)
回答(1):

一个技巧是利用 traits

template 
struct Copy {
static void do_copy(T& l,T& r) {
    l = r;
}
};
template 
struct Copy {
static void do_copy(T& l,T& r) {
    strcpy(l,r);
}
};

template 
void Swap(T &a,T &b)
{
    T t;
    Copy::do_copy(t,a);
    Copy::do_copy(a,b);
    Copy::do_copy(b,t);
}

好处是如果别的类也有特别的赋值方式,只需要特化 Copy 模板即可,并不需要关心 Swap 的实现(这里的实现很简单,但是可能别的时候一些函数模板的逻辑极其复杂而不容易看懂,类的作者并不能轻松确定如何改变类的实现才能使用这个函数模板)


当然这里可能是杀鸡用牛刀了……

回答(2):

可以模板特例化