考慮這個例子:模板paramater - 指針模板類型
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>
};
一個側面說明:在C++'無效的主要()'是'main'無效的簽名。 –