#include <iostream>
enum Status{
A,
B
};
enum Version{
C,
D
};
template <Status S, Version V>
struct Data{
static void Fx(void){}
};
template <> struct Data<A, C>{ static void Fx(void){ std :: cout << “A : C” << std :: endl; } };
template <> struct Data<A, D>{ static void Fx(void){ std :: cout << “A : D” << std :: endl; } };
template <> struct Data<B, C>{ static void Fx(void){ std :: cout << “B : C” << std :: endl; } };
template <> struct Data<B, D>{ static void Fx(void){ std :: cout << “B : D” << std :: endl; } };
int main(void){
Data<A, C> :: Fx();
Data<B, C> :: Fx();
Data<A, D> :: Fx();
Data<B, D> :: Fx();
return 0;
}
A : C
B : C
A : D
B : D
まぁそういう感じよね。