Especialização em modelos de função em ponteiros de função
Eu tenho uma função de sanitização que eu quero executar somente em tipos de ponteiro (tradicional).
Meu problema é com modelos de função que eu posso chegar a limitar a função a ponteiros apenas, no entanto, por causa de diferenças de regra de elenco entre ponteiros de função e ponteiros regulares, me deparo com problemas.
oSanitize()
A função precisa ser executada em uma grande quantidade de tipos, alguns dos quais são ponteiros e precisam ser sanitizados, outros dos quais são ponteiros de função de tipos variados de aridade e de parâmetro e não devem ser higienizados, e alguns deles são tipos de dados não apontadores. que também não deve ser higienizado.
Alguma coisa óbvia, estou perdendo?
template<typename T>
T* Sanitize(T* value)
{
return (T*)SanitizePointer(value); //SanitizePointer returns void*, so cast is necessary
}
template<typename T>
T Sanitize(T value)
{
return value; //Non-pointers can be passed without sanitization
}
int main()
{
int a;
int* b;
int (*c)();
Sanitize(a);
Sanitize(b);
Sanitize(c); //<- ERROR
return 0;
}