Шаблонный класс неполной специализации
Я столкнулся с интересным моментом, что я нене в состоянии объяснить или найти объяснение. Рассмотрим следующее определение шаблона (скомпилировано с 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()
{
}
И я могу'не понимаю, почему. Это сознательное дизайнерское решение, принятое, чтобы избежать какой-то проблемы? »не предвидеть? Это недосмотр?
Заранее спасибо.