Parcialmente especializando implementações de funções-membro

Atualmente, estou refatorando algum código que especializa explicitamente uma função de membro de um modelo de classe com dois parâmetros de modelo.

template <class S, class T>
class Foo
{
  void bar();
};

template <class S, class T>
void Foo<S, T>::bar()
{ /* Generic stuff */ }

template <>
void Foo<SomeType, SomeType>::bar()
{ /* Some special function */ }

Agora eu adicionei mais alguns parâmetros de modelo, então a classe agora fica assim:

template <class S, class EXTRA0, class T, class EXTRA1>
class Foo
{
  void bar();
};

Esses dois parâmetros extras apenas adicionam typedefs à minha classe, para que a funcionalidade do tempo de execução não seja alterada. Existe alguma maneira de manter a implementação (agora parcialmente) especializada de bar? Não consigo descobrir a sintaxe para isso e tenho um pressentimento de que talvez não seja possível.

Editar: Estou procurando algo como:

template <class EXTRA0, class EXTRA1>
void foo<SomeType, EXTRA0, Sometype, EXTRA1>::bar()
{
   /* specialized implementation */
}

que não parece compilar ..

questionAnswers(4)

yourAnswerToTheQuestion