template
void printType(T param)
{
// code for the general case - or omit the definition to allow only the specialized types
}
template<>
void printType(char* param)
{
// code for char*
}
template<>
void printType(int param)
{
// code for int
}
// ...