考虑这个例子:
template< typename T, T &V>
void doSomething() {
V = 1;
}
int i;
double d1, d2;
int main() {
doSomething< int, i>();
doSomething< double, d1>();
doSomething< double, d2>();
return 0;
}
是否可以在调用中删除类型名称?像这样:
doSomething< i>();
doSomething< d1>();
doSomething< d2>();
请注意,功能签名不应更改。您仍然必须能够将其用作:
typedef void (*THandler)();
THandler handlers[] = {
&doSomething< int, i>,
&doSomething< double, d1>,
&doSomething< double, d2>
};
答案 0 :(得分:1)
是。
template<typename T>
void doSomething(T& V) {
V = 1;
}
但你这样使用它:
doSomething(i);
doSomething(d1);
doSomething(d2);