10

次のコードがあります。

//1
template<typename T>
void c(T in) {
    cout << "Template c(" << in << ")" << endl;
}
//2
template<>
void c<>(int* in) { 
        cout << "Template specialization b(" << in << ")" <<endl;
}
//3
template<typename T>
void c(T* in) {
        cout << "Template for pointers c(" << in << ")" <<endl;
}
//..
int i = 8;
c(&i);

次の例でコンパイラが関数 #3 を選択する理由を説明してもらえますか?関数 #2 と #3 の順序を変更すると、コンパイラは関数 #2 を選択しますか?

4

1 に答える 1