Эта строка должна не быть там.
При полной специализации есть template<>
, и это обязательно. Выполняя частичную специализацию, вы помещаете параметры частичной специализации в эти угловые скобки, и нет дополнительного ключевого слова template
.
Итак, полная специализация:
template <>
struct bar<qyzzy>
и частичная специализация:
template <typename F>
struct bar<foo<F> >
У каждого есть ровно одно ключевое слово template
и две пары угловых скобок.