How to make ad-hoc polymorphism less ad hoc
POPL '89 Proceedings of the 16th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
A system of constructor classes: overloading and implicit higher-order polymorphism
FPCA '93 Proceedings of the conference on Functional programming languages and computer architecture
Signatures: a language extension for improving type abstraction and subtype polymorphism in C++
Software—Practice & Experience
Curiously recurring template patterns
C++ Report
Disambiguated glommable expression templates
Computers in Physics
Container-free numerical algorithms in C++
Computers in Physics
Generative programming: methods, tools, and applications
Generative programming: methods, tools, and applications
Modern C++ design: generic programming and design patterns applied
Modern C++ design: generic programming and design patterns applied
Scientific and Engineering C++: An Introduction with Advanced Techniques and Examples
Scientific and Engineering C++: An Introduction with Advanced Techniques and Examples
C++ Templates
Selected Papers from the International Seminar on Generic Programming
Selected Papers from the International Seminar on Generic Programming
ESOP '92 Proceedings of the 4th European Symposium on Programming
ISAAC '88 Proceedings of the International Symposium ISSAC'88 on Symbolic and Algebraic Computation
The Lambda library: unnamed functions in C++
Software—Practice & Experience
Contextual polymorphism
Algorithm specialization in generic programming: challenges of constrained generics in C++
Proceedings of the 2006 ACM SIGPLAN conference on Programming language design and implementation
Scrap++: scrap your boilerplate in C++
Proceedings of the 2006 ACM SIGPLAN workshop on Generic programming
Library composition and adaptation using c++ concepts
GPCE '07 Proceedings of the 6th international conference on Generative programming and component engineering
Software thread-level speculation: an optimistic library implementation
Proceedings of the 1st international workshop on Multicore software engineering
Science of Computer Programming
JavaGI: The Interaction of Type Classes with Interfaces and Inheritance
ACM Transactions on Programming Languages and Systems (TOPLAS)
ConceptClang: an implementation of C++ concepts in Clang
Proceedings of the seventh ACM SIGPLAN workshop on Generic programming
The Combinatorial BLAS: design, implementation, and applications
International Journal of High Performance Computing Applications
Design of concept libraries for c++
SLE'11 Proceedings of the 4th international conference on Software Language Engineering
Template metaprogramming techniques for concept-based specialization
Scientific Programming
Hi-index | 0.00 |
Concepts--sets of abstractions related by common requirements-- have a central role in generic programming. This paper proposes a general framework for using concepts to control polymorphism in different ways. First, concepts can be used to constrain parametric polymorphism, as exemplified by type classes in Haskell. Second, concepts can be used to provide fine-grained control of function and operator overloading. Finally, generic functions can be overloaded (specialized) based on concepts, rather than simply on types. We describe a C++ implementation of a new mechanism, which we call enable_if, and its role in concept-controlled polymorphism.