¿Es posible escribir plantillas / macros de c ++ para verificar si dos funciones tienen las mismas firmas?

¿Es posible escribir plantillas / macros de c ++ para verificar si dos funciones tienen las mismas firmas (tipo de retorno y lista de argumentos)?

Aquí hay un ejemplo simple de cómo quiero usarlo:

int foo(const std::string& s) {...}
int bar(const std::string& s) {...}

if (SAME_SIGNATURES(foo, bar))
{
    // do something useful... make Qt signal-slot connection for example...
}
else
{
    // signatures mismatch.. report a problem or something...
}

Entonces, ¿es posible de alguna manera o es solo un sueño imposible?

PD En realidad estoy interesado en el estándar c ++ 2003.

Respuestas a la pregunta(3)

Su respuesta a la pregunta