>>627
それがコンパイルエラーになるのはクラステンプレートの部分特殊化が抜けているからでは。

template<class M>struct A<int, M> {void foo();};
これを追加したらコンパイルできた(VisualC++2005Express)。

コメントアウトしてるのが大丈夫なのは関数テンプレートの特殊化と解釈されるからだと思う。
関数テンプレートの部分特殊化は出来ないというのが今の言語仕様だったはず。