メンバテンプレートを特殊化するときクラススコープに宣言できない仕様になったのは
どうしてですか?VC はできますが。

class X {
template<class T> void f(T);
template<> void f(int); // NG
};
template<> void X::f(int); // OK