An introduction to partial evaluation
ACM Computing Surveys (CSUR)
Generative programming: methods, tools, and applications
Generative programming: methods, tools, and applications
A fast string searching algorithm
Communications of the ACM
Modern C++ design: generic programming and design patterns applied
Modern C++ design: generic programming and design patterns applied
The C++ Programming Language
Introduction to Algorithms
Partial Evaluation of Computation Process—AnApproach to a Compiler-Compiler
Higher-Order and Symbolic Computation
Generative Programming and Active Libraries
Selected Papers from the International Seminar on Generic Programming
C++ Template Metaprogramming: Concepts, Tools, and Techniques from Boost and Beyond (C++ in Depth Series)
Beyond the C++ Standard Library
Beyond the C++ Standard Library
Generic programming and high-performance libraries
International Journal of Parallel Programming - Special issue: The next generation software program
Debugging C++ template metaprograms
Proceedings of the 5th international conference on Generative programming and component engineering
Evolving a language in and for the real world: C++ 1991-2006
Proceedings of the third ACM SIGPLAN conference on History of programming languages
Simple and safe SQL queries with c++ templates
GPCE '07 Proceedings of the 6th international conference on Generative programming and component engineering
C++ reflection for high performance problem solving environments
SpringSim '07 Proceedings of the 2007 spring simulation multiconference - Volume 2
Implementation of a Finite State Machine with Active Libraries in C++
Generative and Transformational Techniques in Software Engineering II
Measuring the Overhead of C++ Standard Template Library Safe Variants
Electronic Notes in Theoretical Computer Science (ENTCS)
Generative Version of the FastFlow Multicore Library
Electronic Notes in Theoretical Computer Science (ENTCS)
Multicore C++ Standard Template Library in a Generative Way
Electronic Notes in Theoretical Computer Science (ENTCS)
Hi-index | 0.00 |
C++ template metaprogramming is an emerging direction of generative programming: with proper template definitions we can enforce the C++ compiler to execute algorithms at compilation time. Template metaprograms have become essential part of today's C++ programs of industrial size; they provide code adoptions, various optimizations, DSL embedding, etc. Besides the compilation time algorithms, template metaprogram data-structures are particularly important. From simple typelists to more advanced STL-like data types there are a variety of such constructs. Interesting enough, until recently string, as one of the most widely used data type of programming, has not been supported. Although, boost::mpl::string is an advance in this area, it still lacks the most fundamental string operations. In this paper, we analysed the possibilities of handling string objects at compilation time with a metastring library. We created a C++ template metaprogram library that provides the common string operations, like creating sub-strings, concatenation, replace, and similar. To provide real-life use-cases we implemented two applications on top of our Metastring library. One use case utilizes compilation time inspection of input in the domain of pattern matching algorithms, thus we are able to select the more optimal search method at compilation time. The other use-case implements safePrint, a type-safe version of printf - a widely investigated problem. We present both the performance improvements and extended functionality we have achieved in the applications of our Metastring library.