Is it possible to specialize a class method for individual enum values? Specifically I have an enum and a class as follows:
#include <iostream>
#include <stdio.h>
using namespace std;
enum class Animal { dog, cat, bird };
class Sound
{
public:
static void getSound ( const Animal& arg )
{
switch ( arg )
{
case Animal::dog:
// dog specific processing
break;
case Animal::cat:
// cat specific processing
break;
case Animal::bird:
// bird specific processing
break;
default:
return;
}
}
};
I want to specialize getSound function for each of the enum values to get rid of the switch case. Is such template specialization possible?