UNIX network programming
Design patterns: elements of reusable object-oriented software
Design patterns: elements of reusable object-oriented software
The design and evolution of C++
The design and evolution of C++
A pattern language for tool construction and integration based on the tools and materials metaphor
Pattern languages of program design
Reusability through self-encapsulation
Pattern languages of program design
Pattern languages of program design 2
Pattern languages of program design 2
Localized ownership: managing dynamic objects in C++
Pattern languages of program design 2
Pattern-oriented software architecture: a system of patterns
Pattern-oriented software architecture: a system of patterns
Pattern languages of program design 3
Pattern languages of program design 3
Pattern languages of program design 3
Patterns for evolving frameworks
Pattern languages of program design 3
Pattern hatching: design patterns applied
Pattern hatching: design patterns applied
Generative programming: methods, tools, and applications
Generative programming: methods, tools, and applications
Writer's Workshops and the Work of Making Things
Writer's Workshops and the Work of Making Things
The C++ Programming Language
Pattern Languages of Program Design 4
Pattern Languages of Program Design 4
Pattern-Oriented Software Architecture: Patterns for Concurrent and Networked Objects
Pattern-Oriented Software Architecture: Patterns for Concurrent and Networked Objects
C++ Templates
The Art of UNIX Programming
Lean Software Development: An Agile Toolkit
Lean Software Development: An Agile Toolkit
C++ Template Metaprogramming: Concepts, Tools, and Techniques from Boost and Beyond (C++ in Depth Series)
Effective C++: 55 Specific Ways to Improve Your Programs and Designs (3rd Edition)
Effective C++: 55 Specific Ways to Improve Your Programs and Designs (3rd Edition)
Conference record of the 33rd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Patterns for parallel programming
Patterns for parallel programming
Deferred cancellation: a behavioral pattern
Proceedings of the 15th Conference on Pattern Languages of Programs
Metaprogramming in Ruby: a pattern catalog
Proceedings of the 17th Conference on Pattern Languages of Programs
Hi-index | 0.00 |
The classic UNIX principle to write code that generates code instead of writing this code yourself [48, Chapters 1, 9] is experiencing a revival. Much research was done, the techniques are better understood now, and the generation tools were refined. This pattern catalog consists of adaptations of the Gang of Four design patterns [27] Abstract Factory, Adapter, Strategy, and Visitor to the metaprogramming level. It shows that replacing runtime polymorphism by static polymorphism helps to lift variation from the code level up to the meta level, where it might more naturally belong to. Some of the patterns proposed are especially useful for facilitating portable code. The patterns shown can be used to build static Frameworks [50]. A simple example is also presented. For all patterns proposed we identified usage examples in popular existing applications or libraries. Each pattern presentation is accompanied with an example. These examples show sample code in C++. The template metaprogramming capabilities of C++ [2, 17, 65] allow us to express both the program and the meta program in the same programming language.