假设我有一个模板函数,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()
第二个参数不参与模板参数推导?