Generative programming (GP) with C++

  • Ulrich W. Eisenecker
Part of the Lecture Notes in Computer Science book series (LNCS, volume 1204)


This paper gives a brief summary of generative programming (GP) and its main principles. To investigate GP and for implementing generators usually new languages are developed and deployed in research. But it seems not to be imperative to base work on new languages. Therefore the qualification of the multiparadigm language C++ will be examined. The effectiveness of C++ for GP as well as basic idioms and techniques are explored in more detail. This includes statically and dynamically configured systems, migrating from generic to generative programming, compositional use of templates, delaying code injection in statically configured systems, controlling virtualization of functions, interface extension and adding properties by inheriting from template parameters, and expressing constraints for template parameters of related classes.


generative programming object-orientation reusability C++ templates 


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. [Ans95]
    ANSI X3J16, Working Paper for Draft Proposed International Standard for Information Systems — Programming Language C++, X3J16/95-0185, WG21/N0785,26. September 1995, Google Scholar
  2. [Bat92]
    D. Batory and S. O'Malley, The Design and Implementation of Hierarchical Software Systems With Reusable Components, in: ACM Transactions on Software Engineering and Methodology, Vol 1(4), October 1992Google Scholar
  3. [Bat96a]
    D. Batory, Subjectivity and GenVoca Generatos, in: [Sit96], pp. 166–175Google Scholar
  4. [Bat96b]
    D. Batory, Software System Generators, Architectures, and Reuse. Tutorial Notes for the International Conference on Software Reuse '96 (Orlando), 1996Google Scholar
  5. [Bre96]
    U. Breymann, Die C++ Standard Template Library, Addison-Wesley, 1996Google Scholar
  6. [Cop92]
    J. Coplien, Advanced C++ Programming Styles and Idioms, Addison-Wesley, 1992Google Scholar
  7. [Czar96a]
    K. Czarnecki, “Separation of Concerns” — objektorientierte Frameworks und das generative Paradigma, in: OBJEKTspektrum, 6/96, pp. 35–40Google Scholar
  8. [Czar96b]
    K. Czarnecki, Transformationen in Smalltalk, in: OBJEKTspektrum, 6/96, pp. 86–95Google Scholar
  9. [Eis95a]
    U. Eisenecker, Exceptions in Libraries. In: Pre-Austin Mailing, Document Number X3J16/95-0006 (WG21/N0606)Google Scholar
  10. [Eis95b]
    U. Eisenecker, Recht auf Fehler, Strategien zur Fehlerbehandlung in C++-Klassenbibliotheken, in: iX, 6/1995, pp. 184–189Google Scholar
  11. [Eis95c]
    U. Eisenecker, Typisierung und Polymorphic in C++, in: OBJEKTspektrum, 5/1995, pp. 81–83Google Scholar
  12. [Eis96a]
    U. Eisenecker, Templates statt Vererbung, in: OBJEKTspektrum, 4/1996, pp. 92–95Google Scholar
  13. [Eis96b]
    U. Eisenecker, Attribute im Zugriff, in: OBJEKTspektrum, 5/1996, pp. 98–101Google Scholar
  14. [Eis96c]
    U. Eisenecker, “Das generative Paradigma” oder “Was kommt nach der Objektorientierung?”, in: OBJEKTspektrum, 6/96, pp. 30–34Google Scholar
  15. [Eis96d]
    U. Eisenecker, Generatives Programmieren mit C++, in: OBJEKTspektrum, 6/1996, pp. 79–84Google Scholar
  16. [Gam95]
    E. Gamma, R. Helm, R. Johnson, and J. Vlissides, Design Patterns, Elements of Reusable Object-Oriented Software, Addison-Wesley, 1995Google Scholar
  17. [Gol95]
    A. Goldberg and K. Rubin, Succeeding with Objects, Addison-Wesley, 1995Google Scholar
  18. [Kic96]
    G. Kiczales, J. Irwin, J. Lamping, J.-M. Lointier, C. V. Lopes, Ch. Maeda, and A. Mendhekar, Aspect-Oriented Programming, A Position Paper From the Xerox PARC Aspect-Oriented Programming Project, position paper for the ECOOP'96 Workshop on Adaptability in Object-Oriented Software Development, 1996, http:/ Scholar
  19. [Mus94]
    D. R. Musser and A. A. Stepanov, Algorithm-Oriented Generic Libraries, in: Software Practice and Experience, Vol 24(7), 1994Google Scholar
  20. [Mus96]
    D. R. Musser and A. Saini, STL Tutorial and Reference Guide. C++ Programming with the Standard Template Library, Addison-Wesley, 1996Google Scholar
  21. [Sim95]
    Ch. Simonyi, The Death of Computer Languages, The Birth of Intentional Programming, Technical Report MSR-TR-95-52, Microsoft Research, 1995Google Scholar
  22. [Sim96]
    Ch. Simonyi, Intentional Programming — Innovation in the Legacy Age, Presented at IFIP WG 2.1 meeting, June 4, 1996 (for more information about IP see Scholar
  23. [Sit96]
    M. Sitaraman (Ed.), Fourth International Conference on Software Reuse, April 23–26, 1996, Orlando Florida, IEEE Computer Society Press, 1996Google Scholar
  24. [Ste94]
    A. Stepanov and M. Lee, The Standard Template Library, Hewlett-Packard Laboratories, California, 1994, Google Scholar
  25. [Str94]
    B. Stroustrup, The Design and Evolution of C++, Addison-Wesley, 1994Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 1997

Authors and Affiliations

  • Ulrich W. Eisenecker
    • 1
  1. 1.Fachbereich InformatikFachhochschule HeidelbergHeidelbergGermany

Personalised recommendations