Wie kann eine Fabrik mit mehreren Schaltern implementiert werden?

Ich möchte eine Factory-Funktion zum Erstellen von Objekten implementieren. Meine Objektvorlage sieht folgendermaßen aus:

template <typename TA, typename TB>
struct MyImpl : public MyInterface
{
    // content
};

und meine fabrik ist wie folgt:

MyInterface* factory(char ta, char tb)
{
    if(ta == 'c' && tb == 'c')
    {
        return new MyImpl<char, char>();
    }
    if(ta == 'c' && tb == 's')
    {
        return new MyImpl<char, short>();
    }
    if(ta == 's' && tb == 'c')
    {
        return new MyImpl<short, char>();
    }
    // and so on ....
}

Die Werksfunktion muss nicht statische Char-Daten akzeptieren (ta, tb), denn es konnte zur Kompilierungszeit nicht bestimmt werden, und ich denke, das ist der springende Punkt dieser Factory. Eigentlich,ta undtb werden aus einer Datei (oder einem Netzwerk) gelesen.

Ich möchte eine einfachere Lösung, um den nervigen 2-Stufen-Schalter zu vermeiden.

Ich denke, meine Frage ist ähnlich wiewie-würde-man-ein-meta-schreiben-wenn-sonst-wenn-in-c mit der Ausnahme, dass ich keine statischen Parameter verwenden kann.

Vielleicht sollte ich einfach auf C-Makros zurückgreifen und einige Makrotricks anwenden, um meinen aktuellen Code zu verkleinern?

Danke im Voraus!

AKTUALISIEREN

Antwort an @Rob:

Mein eigentlicher Code wäre komplexer mit vielen anderen Inhalten und schwieriger zu lesen und in vielen Aspekten nicht verwandt. Ich versuche, den Pseudocode richtig zu machen. Wenn es ein Problem gibt, informieren Sie mich bitte :-).

Antwort an @ Dynguss:

Mein Problem ist, dass in meiner tatsächlichen Implementierung die Parameter der Fabrik (ta, tb) einen großen Bereich haben, wie 10 x ta und 20 x tb, und die Kombination von ta und tb in Zeilen sehr lang und schwer zu pflegen ist . Ich brauche also zumindest einen Weg, um die Kombinationsbemühungen zu erleichtern.

Antworten auf die Frage(3)

Ihre Antwort auf die Frage