Compruebe si una clase tiene una función miembro de una firma determinada

Solicito un truco de plantilla para detectar si una clase tiene una función miembro específica de una firma determinada.

El problema es similar al citado aquíhttp: //www.gotw.ca/gotw/071.ht pero no es lo mismo: en el ítem del libro de Sutter respondió a la pregunta de que una clase C DEBE PROPORCIONAR una función miembro con una firma particular, de lo contrario el programa no se compilará. En mi problema, necesito hacer algo si una clase tiene esa función, de lo contrario hacer "otra cosa".

Un problema similar se enfrentó a boost :: serialization pero no me gusta la solución que adoptaron: una función de plantilla que invoca por defecto una función libre (que tiene que definir) con una firma particular a menos que defina una función miembro particular (en su caso, "serializar" que toma 2 parámetros de un tipo dado) con una firma particular, de lo contrario, se producirá un error de compilación. Eso es para implementar la serialización intrusiva y no intrusiva.

No me gusta esa solución por dos razones:

Para no ser intrusivo, debe anular la función global "serializar" que se encuentra en boost :: serialization namespace, por lo que tiene EN SU CÓDIGO DE CLIENTE para abrir el espacio de nombres boost y la serialización de espacios de nombres.La pila para resolver ese desastre fue de 10 a 12 invocaciones de funciones.

Necesito definir un comportamiento personalizado para las clases que no tienen esa función miembro, y mis entidades están dentro de espacios de nombres diferentes (y no quiero anular una función global definida en un espacio de nombres mientras estoy en otra)

¿Puedes darme una pista para resolver este rompecabezas?