【发布时间】:2015-05-05 20:12:45
【问题描述】:
我有类似的东西:
template <class Foob, class T>
void do_it(Foob& f, T& t) { f.proc(t); }
template <class Foob, class T>
void do_it(Foob& f, const T& t) { f.proc(t); }
一些Foobs 采用const T&s 而另一些Foobs 采用T&s,或者相同的Foob 甚至可能有两个procs,一个用于const 案例,一个对于非const 的情况,做不同的事情。
但是,do_it 的代码是相同的:只是f.proc(t)。有时代码有很多行,但仍然相同。有没有办法将do_it 写成一个函数?像这样的东西,虽然这显然行不通:
template <class Foob, class MaybeConst, class T>
void do_it(Foob& f, MaybeConst T& t) { f.proc(t); }
【问题讨论】:
-
@Columbo:不确定我是否理解您的评论,我说的显然行不通,这里是证明:ideone.com/t1GS5P。
-
哎呀,我不小心跳过了
T。 :) 如果删除它(以及相应的参数声明),您将得到如下所示的解决方案。