Posso usar um número constante para escolher uma classe em tempo de compilação, possivelmente usando modelos?

Digamos que eu tenha um valor constante (possivelmente de algum tipo enum). Digamos que eu tenha muitas classes A, B, D etc.

Posso ter algo assim?

C<1> anInstanceOfA; //This will be of type A
C<2> anInstanceOfB; //This will be of type B
C<3> anInstanceOfD; //This will be of type D

Então, é possível selecionar uma classe baseada em um número constante em tempo de compilação?

O problema geral é que eu estou tentando selecionar um functor baseado em uma tabela, em que o índice é um enum. Eu gostaria de evitar o polimorfismo, se possível.

Editar: Para este projeto eu não posso usar o C ++ 11, obrigado de qualquer maneira a quem respondeu nesse contexto, muito interessante saber de qualquer maneira.
Editar 2: Em geral, posso ter mais de duas classes de destino, editei minha pergunta

questionAnswers(3)

yourAnswerToTheQuestion