c ++ especialización de plantilla para todas las subclases

Necesito crear una función de plantilla como esta:

template<typename T>
void foo(T a)
{
   if (T is a subclass of class Bar)
      do this
   else
      do something else
}

También puedo imaginar hacerlo usando la especialización de plantilla ... pero nunca he visto una especialización de plantilla para todas las subclases de una superclase. No quiero repetir el código de especialización para cada subclase

Respuestas a la pregunta(8)

Su respuesta a la pregunta