Comment faire pour déterminer le type d'une variable?

je veux trouver le type d'une Variable (la variable est donnée par un paramètre du Modèle, donc je ne sais pas ce que c'est).

#include <iostream>
#include <typeinfo>

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

Mais le Code ne dégage que:
$./test

d

mais j'aurais besoin de la double à la place.

Le point est, je ne sais pas quel type d'attendre, mais je dois l'écrire dans un sous-programme, qui as pour être compilé. Donc, d est une mauvaise idée.

  • Si c'est un paramètre du modèle, n'est-ce pas le paramètre le type lui-même?!
  • Il n'y a pas moyen de faire ce que vous voulez. Le nom de la représentation est définie par l'implémentation, et IIRC la mise en œuvre est permis de ne pas fournir une représentation à tous. Tout ce qui était dans le cas de types polymorphes seulement, bonne chance avec les types polymorphes.
  • Ma conjecture est que vous voulez faire quelque chose que vous n'avez pas expliqué. Pourquoi avez-vous besoin le type de nom? Je suis assez sûr qu'il y est un moyen de résoudre votre problème réel, plutôt que celui que vous avez demandé.
  • Vous devriez vraiment utiliser un exemple qui illustre votre problème. Dans l'exemple il n'y a pas n'importe quel modèle de paramètres, les principaux problèmes que vous voulez résoudre, n'est pas expliqué par l'exemple...
  • Je reçois l'essai par l'intermédiaire de modèle, donc je ne sais pas de quel type il est. Quelque chose comme template<test> ... j'ai utiliser le type de l'information plus tard lors de la compilation d'un opencl programme qui dans ce cas doit être fait au moment de l'exécution.
  • En regardant 5.2.8/3 dans mon projet de C++0x Standard, on dirait que vous êtes censé recevoir un std::type_info objet pour les non-polymorphe aussi des types. Bien sûr, pas tous les compilateurs de mettre en œuvre tous les détails de la Norme encore, et name() renvoie quelque chose de la mise en œuvre définies.
  • Si vous obtenez le type d'un paramètre du modèle que vous avez déjà le type là, n'est-ce pas?

InformationsquelleAutor cl_progger | 2011-11-23