假设我有一个模板函数,assign(). 它接受一个指针和一个值,并将值分配给指针的目标:
template <typename T> void assign(T *a, T b) { *a = b; }
int main() {
double i;
assign(&i, 2);
}
在这种情况下,我总是想T从第一个参数中推断出来,但看起来我没有很好地表达这一点。2的类型是int,所以:
推断.cpp:5:5:错误:没有匹配函数调用“分配”
赋值(&i, 2);
^~~~~~
推断.cpp:1:28:注意:候选模板被忽略:推断参数“T”的冲突类型(“双”与“整数”)
模板无效分配(T *a,T b){ *a = b; }
有没有办法可以声明assign()第二个参数不参与模板参数推导?