假设我有 2 个函数,它们对参数执行完全相同的操作,但使用不同的常量集来执行此操作。对于一个过于简单的例子:
int foo1(int x){
return 3+4*x
}
int foo2(int x){
return 6-4*x
}
在实际应用中假设会有多个参数和常量/文字,当然计算会复杂得多。为了简单起见,以及可维护性,我想将这两个函数重写为可以生成这两个函数的模板,以便我可以调用 foo<1> 或 foo<2> 并生成正确的函数. 我知道我可以做这样的事情:
int foo(int x, int funcType){
const int firstConst = (funcType==1) ? 3 : 6;
const int secondConst = (funcType==1) ? 4 : -4;
return firstConst+secondConst*x;
}
但由于我在编译时总是知道要使用哪个函数,所以我想使用模板来避免分支。有没有办法做到这一点?