2010-05-22 7 views
6

Existe-t-il un utilitaire qui me permettrait d'inspecter l'instanciation du modèle? mon compilateur est g ++ ou Intel.inspecter l'instanciation du modèle C++

Points spécifiques: Je voudrais

  • étape par étape. Instanciation
  • Instanciation backtrace (peut bidouiller en compilant le compilateur, meilleure méthode?)
  • Inspection des paramètres du modèle.

@gf m'a aidé avec l'impression de type simple, C++ template name pretty print.

Cependant, je reçois en phoenix boost et niveau du modèle le rend très difficile de comprendre ce qui se passe et je voudrais solution intelligente

aussi, si vous avez des techniques inspectant instanciation de modèle, pouvez-vous s'il vous plaît de les partager .

Merci

Répondre

9

Avec des modèles que nous n'avons tout simplement pas d'installations de production propres et il n'y a aucun compilateurs que je connaisse qui vous permettent de visualiser directement instanciation de modèle. Le plus proche trouvé concernant le débogage métaprogram était a paper on Templight.

Pour l'instant les meilleurs utilitaires semblent être:

  • static asserts & concept checks (affirmer clairement vos hypothèses)
  • les backtraces instanciation mentionnées (par exemple en utilisant statique affirme)
  • instanciations laisser générer des avertissements ( peut le faire)
  • un traceur, une classe personnalisée qui est passée en tant qu'argument de modèle et est utilisée pour émettre une sortie d'exécution (introduite par C++ Templates - The Complete Guide)
+0

ok, je pense que vous vouliez dire mpl :: print. Je l'ai trouvé dans le papier que vous avez lié – Anycorn

+0

A, en effet, merci. –

+1

Pour ajouter sur le papier: Il existe un [implementation] (http://plc.inf.elte.hu/templight/) disponible. – Nobody