Wie finden Sie heraus, den Typ einer Variablen?

ich möchte, um herauszufinden, den Typ einer Variable (die variable ist gegeben durch eine Template-parameter, also ich weiß nicht, was es ist).

#include <iostream>
#include <typeinfo>

int main() 
{
    double test;
    std::cout << typeid(test).name() << std::endl;
}

Aber der Code, der nur strahlt:
$./test

d

aber ich bräuchte Doppel statt.

Der Punkt ist, ich weiß nicht, welcher Typ zu erwarten ist, aber ich Schreibe es in ein Unterprogramm, das hast kompiliert werden. Also d ist eine schlechte Idee.

  • Wenn es ein template-parameter ist nicht, dass die parameter der Typ selbst?!
  • Es gibt keine standard-Weg, um zu tun, was Sie wollen. Der name der Vertretung, ist von der Implementierung definiert, und IIRC die Umsetzung darf nicht auf eine Vertretung in allen. All das war im Fall von polymorphen Typen nur, Glück mit nicht-polymorphe Typen.
  • Meine Vermutung ist, dass Sie etwas tun wollen, die Sie noch nicht erklärt. Warum müssen Sie den Namen eingeben? Ich bin mir ziemlich sicher, dass es einen Weg zur Lösung Ihres eigentlichen Problems, sondern als die, die Sie gestellt haben.
  • Sie sollten sich wirklich ein Beispiel, das zeigt Ihr problem. Im aktuellen Beispiel gibt es keine template-Parameter, also die wichtigsten Probleme, die Sie lösen wollen, wird nicht erläutert durch das Beispiel...
  • Ich bekomme test über die Vorlage, also ich weiß nicht, welche Art es ist. So etwas wie Vorlage<test> ... ich habe mit der Art Informationen, die später bei der Erstellung eines opencl-Programm, das in diesem Fall getan werden muss, zur Laufzeit.
  • Betrachten 5.2.8/3 in meinem Entwurf des C++0x-Standard, es sieht aus wie Sie sollen, um eine std::type_info Objekt für nicht-polymorphe Typen auch. Natürlich, nicht alle Compiler implementieren, die jedes detail der Standard noch, und name() etwas zurückgibt, Implementierung-definiert.
  • Wenn Sie den Typ als template-parameter haben Sie bereits die Art genau dort, haben Sie nicht?

InformationsquelleAutor cl_progger | 2011-11-23
Schreibe einen Kommentar