0

この例を考えると:

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

1 に答える 1

1

はい。

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

しかし、次のように使用します。

doSomething(i);
doSomething(d1);
doSomething(d2);
于 2013-10-04T15:38:13.460 に答える