Шаблонный класс неполной специализации

Я столкнулся с интересным моментом, что я нене в состоянии объяснить или найти объяснение. Рассмотрим следующее определение шаблона (скомпилировано с mingw g ++ 4.6.2):

template 
class Foo
{
public:
    void f(){}
    void g(){}
};

Если мы хотим, мы можем полностью специализировать любую отдельную функцию-член:

template 
void Foo::f() {}

Но частичная специализация терпит неудачу с "недопустимое использование неполного типа 'класс Foo <...>» ошибка:

template 
void Foo::f()
{
}

template 
void Foo::f()
{
}

И я могу'не понимаю, почему. Это сознательное дизайнерское решение, принятое, чтобы избежать какой-то проблемы? »не предвидеть? Это недосмотр?

Заранее спасибо.

Ответы на вопрос(3)

Ваш ответ на вопрос