Richtigen Typ aussuchen als Funktion eines anderen Typs zur Compile-Zeit
-
Hallo,
gibt es irgendeine Möglichkeit zur Compile-Zeit einen Typen als Funtion eines anderen Typen zu generieren?Etwas genauer:
Wenn ich Typ A habe, soll Typ AX generiert werden,
wenn ich Typ B habe soll Typ BX generiert werden, etc. (die Typnamen sind nur Beispiele bzw Platzhalter)
äquivalent zu einer switch-case Anweisung mit Typen.
Und eben zur Compile-Zeit.also Beispiel:
Angenommen ich will folgende Funktionen automatisch generieren:AX myfunc(A foo) { return AX(A); //Nur Beispiel }für viele A,AX,B,BX,C,CX,...
Natürlich kann ich folgende allgemeine Template Funktion angeben:
template <typenname T, typenname TX> TX myfunc(T foo) { //... }Aber die Sache ist eben dass TX eindeutig von T abhängt.
Ich habe also eine Tabelle mit den T -> TX.
Wie kann ich das dem Compiler rüberbringen?
-
Hm, bin kein Template-Experte, aber so ginge es zum Beispiel:
template <typename T> struct convertType {}; template <> struct convertType<int> { using type = float; }; template <> struct convertType<char> { using type = double; }; // hier weitere Typen einfügen template <typename T> using convertType_t = typename convertType<T>::type; (...) convertType_t<int> a; // a ist nun ein float convertType_t<chat> b; // b ist nun ein double