Verifique se uma classe tem uma função de membro de uma determinada assinatura

Estou pedindo um truque de modelo para detectar se uma classe tem uma função de membro específica de uma determinada assinatur

O problema é semelhante ao aqui citadohttp: //www.gotw.ca/gotw/071.ht mas não o mesmo: no item do livro de Sutter, ele respondeu à pergunta que uma classe C DEVE FORNECER uma função de membro com uma assinatura específica, caso contrário o programa não será compilado. No meu problema, preciso fazer algo se uma classe tiver essa função, caso contrário, faça "algo mais".

Um problema semelhante foi enfrentado pelo boost :: serialization, mas eu não gosto da solução que eles adotaram: uma função de modelo que chama por padrão uma função livre (que você precisa definir) com uma assinatura específica, a menos que você defina uma função-membro específica (no caso "serialize", que usa 2 parâmetros de um determinado tipo) com uma assinatura específica, caso contrário, ocorrerá um erro de compilação. Isso é para implementar serialização intrusiva e não intrusiva.

Não gosto dessa solução por dois motivos:

Para não ser intrusivo, você deve substituir a função global "serialize" que está no namespace boost :: serialization, para que você tenha EM SEU CÓDIGO DO CLIENTE para abrir o boost do namespace e a serialização do namespace! A pilha para resolver essa bagunça era de 10 a 12 invocações de funçõe

Preciso definir um comportamento personalizado para classes que não possuem essa função de membro e minhas entidades estão em espaços para nome diferentes (e não quero substituir uma função global definida em um espaço para nome enquanto estou em outro)

Pode me dar uma dica para resolver esse quebra-cabeça?

questionAnswers(13)

yourAnswerToTheQuestion