模板参数 - 指向模板类型的指针

时间:2013-10-04 15:32:27

标签: c++ function templates

考虑这个例子:

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>
};

1 个答案:

答案 0 :(得分:1)

是。

template<typename T>
void doSomething(T& V) {
    V = 1;
}

但你这样使用它:

doSomething(i);
doSomething(d1);
doSomething(d2);