Здравствуйте, Андрей Тарасевич, Вы писали:
АТ>Прямой "короткий" ответ на вопрос не имеет никакого отношения ни к каким частичным специализациям функций. Язык просто запрещает объявление явных специализаций любых шаблонов внутри определения охватывающего шаблона класса. Этот запрет в одинаковой мере распространяется и на классы, и на функции, т.е. отсутствие частичной специализации функций тут вообще ни при чем.
Но при этом частичные специализации можно делать прямо в классе:
struct A
{
template <typename> struct Foo;
template <typename T> struct Foo<T*> {}; // OK
template <> struct Foo<int> {}; // error: explicit specialization in non-namespace scope 'struct A'
};
Это просто для полноты картины.