Especialização incompleta de classe de modelo

Eu me deparei com um ponto interessante que eu não fui capaz de explicar ou encontrar uma explicação para isso. Considere a seguinte definição de modelo (compilada com mingw g ++ 4.6.2):

template <typename T, typename S>
class Foo
{
public:
    void f(){}
    void g(){}
};

Se quisermos, podemos especializar totalmente qualquer função de membro único:

template <>
void Foo<char,int>::f() {}

Mas a especialização parcial falha com um erro de "uso inválido do tipo incompleto 'classe Foo <...>":

template <typename T, typename S>
void Foo<T,S*>::f()
{
}

template <typename T>
void Foo<T,int>::f()
{
}

E eu não consigo descobrir o porquê. É uma decisão de design consciente feita para evitar algum problema que não posso prever? É um descuido?

Desde já, obrigado.

questionAnswers(3)

yourAnswerToTheQuestion