Führen Sie verschiedene Methoden basierend auf dem Typ der Vorlagenvariablen aus

Gibt es eine Möglichkeit, den Variablentyp zu bestimmen, der an eine Vorlage übergeben wird, und eine Funktion basierend darauf aufzurufen, ob es sich um eine handelt?int oderstd::string usw...?

Zum Beispiel

template <class T>
struct Jam
{
     Jam(T *var)
     {
         if (typeid(var) == typeid(std::string*)
                *var = "Hello!";
         else if (typeid(var) == typeid(int*)
                *var = 25;
     }
};

Wenn ich versuche, diesen Code zu verwenden, erhalte ich eine Fehlermeldunginvalid conversion from const char* to int. Ich vermute, dies liegt daran, dass der Compiler die Vorlage in separate Funktionen "erweitert" und wenn ich eine neue Instanz der Struktur angegeben habethrow Jam<std::string>(&setme); es erkannte dievar* = 25 Anweisung und weigerte sich zu kompilieren.

Gibt es einen richtigen Weg, dies zu tun? Vielleicht mit Makrowachen? Vielen Dank.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage