Darf ich eine konstante Zahl verwenden, um beim Kompilieren eine Klasse auszuwählen, möglicherweise unter Verwendung von Vorlagen?

Angenommen, ich habe einen konstanten Wert (möglicherweise von einem Aufzählungstyp). Angenommen, ich habe viele Klassen A, B, D usw.

Kann ich so etwas haben?

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

Ist es also möglich, beim Kompilieren eine Klasse basierend auf einer konstanten Zahl auszuwählen?

Das allgemeine Problem ist, dass ich versuche, einen Funktor basierend auf einer Tabelle auszuwählen, in der der Index eine Aufzählung ist. Ich möchte Polymorfismus möglichst vermeiden.

Bearbeiten: Für dieses Projekt kann ich ohnehin kein C ++ 11 verwenden, danke an denjenigen, der in diesem Zusammenhang geantwortet hat, sehr interessant zu wissen.
Bearbeiten 2: Im Allgemeinen kann ich mehr als 2 Zielklassen haben, ich habe meine Frage bearbeitet

Antworten auf die Frage(3)

Ihre Antwort auf die Frage