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++
Pattern languages of program design 3
Generic programming and the STL: using and extending the C++ Standard Template Library
Generic programming and the STL: using and extending the C++ Standard Template Library
Mixin-Based Programming in C++
GCSE '00 Proceedings of the Second International Symposium on Generative and Component-Based Software Engineering-Revised Papers
ISCOPE '98 Proceedings of the Second International Symposium on Computing in Object-Oriented Parallel Environments
C++ Template Metaprogramming: Concepts, Tools, and Techniques from Boost and Beyond (C++ in Depth Series)
Software—Practice & Experience - Research Articles
Algorithm specialization in generic programming: challenges of constrained generics in C++
Proceedings of the 2006 ACM SIGPLAN conference on Programming language design and implementation
Concepts: linguistic support for generic programming in C++
Proceedings of the 21st annual ACM SIGPLAN conference on Object-oriented programming systems, languages, and applications
Evolving a language in and for the real world: C++ 1991-2006
Proceedings of the third ACM SIGPLAN conference on History of programming languages
Library composition and adaptation using c++ concepts
GPCE '07 Proceedings of the 6th international conference on Generative programming and component engineering
GPCE '07 Proceedings of the 6th international conference on Generative programming and component engineering
Runtime concepts for the C++ standard template library
Proceedings of the 2008 ACM symposium on Applied computing
Supporting SELL for high-performance computing
LCPC'05 Proceedings of the 18th international conference on Languages and Compilers for Parallel Computing
Design and evaluation of C++ open multi-methods
Science of Computer Programming
Hi-index | 0.00 |
A key benefit of generic programming is its support for producing modules with clean separation. In particular, generic algorithms are written to work with a wide variety of types without requiring modifications to them. The Runtime concept idiom extends this support by allowing unmodified concrete types to behave in a runtime polymorphic manner. In this paper, we describe one implementation of the runtime concept idiom, in the domain of the C++ standard template library (STL). We complement the runtime concept idiom with an algorithm library that considers both type and concept information to maximize performance when selecting algorithm implementations. We present two implementations, one in ISO C++ and one using an experimental language extension. We use our implementations to describe and measure the performance of runtime-polymorphic analogs of several STL algorithms. The tests demonstrate the effects of different compile-time vs. run-time algorithm selection choices.