Parcialmente especializadas implementaciones de funciones miembro

Actualmente estoy refactorizando algún código que explícitamente se especializa en una función miembro de una plantilla de clase con dos parámetros de plantilla.

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 */ }

Ahora agregué algunos parámetros de plantilla más, por lo que la clase ahora se ve así:

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

Estos dos parámetros adicionales simplemente agregan typedefs a mi clase, por lo que la funcionalidad de tiempo de ejecución realmente no cambia. ¿Hay alguna forma de mantener la implementación (ahora parcialmente) especializada de bar? Parece que no puedo entender la sintaxis para eso y tengo el presentimiento de que podría no ser posible.

Editar: Estoy buscando algo como:

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

que no parece compilar ..

Respuestas a la pregunta(4)

Su respuesta a la pregunta