2010-05-22 23 views
6

¿Existe alguna utilidad que me permita inspeccionar la creación de instancias de plantillas? mi compilador es g ++ o Intel.inspeccionar instanciación de plantilla C++

puntos específicos que me gustaría:

  • Paso a paso instanciación.
  • Backtrace de instanciación (puede hackear esto al bloquear el compilador. ¿Mejor método?)
  • Inspección de los parámetros de la plantilla.

@gf me ayudó con la impresión de tipo simple, C++ template name pretty print.

Sin embargo estoy recibiendo en Phoenix impulso y el nivel de la plantilla hace que sea muy difícil entender lo que está pasando y me gustaría solución inteligente

también, si usted tiene algunas técnicas de inspección de instancias de plantilla, puede usted por favor compartirlos .

Gracias

Respuesta

9

Con las plantillas que simplemente no tenemos facilidades de salida limpias y no hay compiladores que conozco que le permiten ver directamente ejemplificaciones plantilla. Lo más parecido que encontré con respecto a la depuración de metaprogramas fue a paper on Templight.

Por ahora las mejores utilidades parecen ser:

  • static asserts & concept checks (afirmar claramente sus supuestos)
  • las trazas de instancias mencionadas (por ejemplo, utilizando estática afirma)
  • ejemplificaciones dejando que generan advertencias (boost::mpl::print podría hacerlo)
  • un trazador, una clase personalizada que se pasa como un argumento de plantilla y se utiliza para emitir salida de tiempo de ejecución (introducido por C++ Templates - The Complete Guide)
+0

bien, creo que se refería a mpl :: print. Lo encontré en el periódico que conectó – Anycorn

+0

A, de hecho, gracias. –

+1

Para agregar en el papel: Hay una [implementación] (http://plc.inf.elte.hu/templight/) disponible. – Nobody