Strumento di preprocessore del modello C++
-
16-09-2019 - |
Domanda
Esiste un compilatore o un preprocessore autonomo che accetta file C++ ed esegue un passaggio di espansione del modello, generando nuovo codice C++ con istanze di modello espanse?
Ricordo uno strumento del genere a metà degli anni '90, quando i modelli erano ancora nuovi e sperimentali e il preprocessore era un modo per programmare modelli con compilatori senza supporto nativo dei modelli.
Questo è molto più complicato di una fase di elaborazione macro poiché probabilmente richiederebbe l'analisi e la tokenizzazione del codice per comprendere i contesti.
La mia speranza è di utilizzare uno strumento del genere durante la scrittura del codice OpenCL. OpenCL è C++, ma non supporta i modelli.Spero di poter scrivere modelli, anche semplici come con argomenti solo interi o bool, e avere qualche strumento che pre-analizza il file, esamina e trova l'uso dei modelli ed espande le invocazioni e mi dà nuovo codice C++ che il compilatore OpenCL Potere capire.
Anche uno strumento molto limitato potrebbe essere utile, non è necessario che supporti ogni peculiarità del modello, né supporti più moduli o altro.
L'alternativa: #define
macro ovunque..più brutto, pericoloso, meno efficiente e meno versatile.
Soluzione
Comeau C++ può "compilare" C++ in C.Questo sembrerebbe essere vicino al tuo obiettivo, poiché OpenCL non supporta C++: è molto più vicino al C.
Altri suggerimenti
Non esiste uno strumento del genere: i modelli fanno parte del linguaggio, non un passaggio del preprocessore: vengono elaborati dal compilatore, proprio come gli altri codici.