The C++ language offers a two layer evaluation model. Thus, it is possible to evaluate a program in two steps: the so-called static and dynamic evaluations. Static evaluation is used for
reducing the amount of work done at execution-time. Programs executed statically, called
meta-programs, are written in C++ through an intensive use of
class templates. Due to the complexity of these structures, writing, debugging and maintaining C++ meta-programs is a
difficult task. Metagene is a program transformation tool which
simplifies the development of such programs. Due to the similarities between C++ meta-programming and functional programming, the input language of Metagene is an ML language. Given a
functional input program, Metagene outputs the corresponding
C++ meta-program expressed using class templates.
This project was initiated by
Francis Maes? at the beginning of February 2003.
Nicolas Tisserand? gave some help at the first steps of the project.
Most of informations given in this page can be found in Metagene introducing paper.
- Metagene, Metagene main page.
- Introduction, An introduction to the Metagene project.
- History: preliminary examples, Some examples showing the equivalence between C++ meta-programming and functionnal programming.
- History: generation paradigm, The generation paradigm and its history.
- Metagene translation process, From functionnal expressions to class templates.
- Related work, Some related work.
- Download Metagene, Download the latest release of Metagene.
- Paper and Slides, A paper introduicing the Metagene project with corresponding slides.
- Possible extensions, Possible extensions to Metagene.
- Horror Show, The museum of C++ horrors.
to top