続:関数のオーバーロードと関数テンプレートの特殊化

となると

template<class T> void f(T);  // A

template<class T> void f(T*); // B

template<> void f<int>(int*); // C

int i;
f(&i); // Cが呼ばれる
template<class T> void f(T);  // A

template<class T> void f(T*); // B

template<> void f<int*>(int*);  // C

int i;
f(&i); // Bが呼ばれる

当然こうなるわけか.