>>621
定義を特殊化するのではなくて、
実装を特殊化するという方法なのでやりたいこととは違うかもしれんが。

#include<stdio.h>
template<typename T>struct A{void foo();};
template<typename T>
void A<T>::foo(){printf("foo\n");}
void A<int>::foo(){printf("int foo\n");}
int main(){
    A<int*> c;
    A<int> d;
    c.foo();
    d.foo();
}