Pregunta

¿Existe un compilador o un preprocesador independiente que tome archivos C++ y ejecute un pase de expansión de plantilla, generando nuevo código C++ con instancias de plantilla expandidas?

Recuerdo una herramienta de este tipo a mediados de los 90, cuando las plantillas aún eran nuevas y experimentales, y el preprocesador era una forma de programar plantillas con compiladores sin soporte de plantillas nativas.

Esto es mucho más complicado que un paso de macroprocesamiento, ya que probablemente requeriría analizar y tokenizar el código para comprender los contextos.

Mi esperanza es utilizar una herramienta de este tipo al escribir código OpenCL. OpenCL es C++, pero no admite plantillas.Espero poder escribir plantillas, incluso las simples como con argumentos enteros o booleanos, y tener alguna herramienta que analice previamente el archivo y revise y encuentre el uso de las plantillas y expanda las invocaciones y me proporcione un nuevo código C++ que el compilador OpenCL poder entender.

Incluso una herramienta muy limitada podría ser útil, no es necesario que admita todas las peculiaridades de la plantilla, ni siquiera que admita varios módulos ni nada por el estilo.

La alternativa: #define macros por todas partes..más feos, inseguros, menos eficientes y menos versátiles.

¿Fue útil?

Solución

Comeau C ++ puede "compilar" C ++ a C. Esto parece estar cerca de su objetivo, como OpenCL no soporta C ++ -. que es mucho más cercano a C

Otros consejos

No existe tal herramienta: las plantillas son parte del lenguaje, no un pase de preprocesador; son procesadas por el compilador, al igual que cualquier otro código.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top