On understanding types, data abstraction, and polymorphism
ACM Computing Surveys (CSUR) - The MIT Press scientific computation series
How to make ad-hoc polymorphism less ad hoc
POPL '89 Proceedings of the 16th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
F-bounded polymorphism for object-oriented programming
FPCA '89 Proceedings of the fourth international conference on Functional programming languages and computer architecture
HOPL-II The second ACM SIGPLAN conference on History of programming languages
Design patterns: elements of reusable object-oriented software
Design patterns: elements of reusable object-oriented software
Qualified types: theory and practice
Qualified types: theory and practice
Typechecking and modules for multimethods
ACM Transactions on Programming Languages and Systems (TOPLAS)
Signatures: a language extension for improving type abstraction and subtype polymorphism in C++
Software—Practice & Experience
Dictionary-free overloading by partial evaluation
Lisp and Symbolic Computation - Special issue on partial evaluation and semantics-based program manipulation (PEPM '94)
ACM Transactions on Programming Languages and Systems (TOPLAS)
Theory and Practice of Object Systems - Special issue: type systems
Using C++ template metaprograms
C++ gems
Making the future safe for the past: adding genericity to the Java programming language
Proceedings of the 13th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
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
Programming with CGAL: the example of triangulations
SCG '99 Proceedings of the fifteenth annual symposium on Computational geometry
A library of generic algorithms in Ada
SIGAda '87 Proceedings of the 1987 annual ACM SIGAda international conference on Ada
The generic graph component library
Proceedings of the 14th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Fast Decision Procedures Based on Congruence Closure
Journal of the ACM (JACM)
Variations on the Common Subexpression Problem
Journal of the ACM (JACM)
Recursive functions of symbolic expressions and their computation by machine, Part I
Communications of the ACM
Modern C++ design: generic programming and design patterns applied
Modern C++ design: generic programming and design patterns applied
Effective STL: 50 specific ways to improve your use of the standard template library
Effective STL: 50 specific ways to improve your use of the standard template library
Design and implementation of generics for the .NET Common language runtime
Proceedings of the ACM SIGPLAN 2001 conference on Programming language design and implementation
The boost graph library: user guide and reference manual
The boost graph library: user guide and reference manual
Types and programming languages
Types and programming languages
The Definition of Standard ML
Tuple types and multiple return values
C/C++ Users Journal
The Matrix Template Library: Generic Components for High-Performance Scientific Computing
Computing in Science and Engineering
What Is Object-Oriented Programming?
IEEE Software
Parametric Overloading in Polymorphic Programming Languages
ESOP '88 Proceedings of the 2nd European Symposium on Programming
A Statically Safe Alternative to Virtual Types
ECCOP '98 Proceedings of the 12th European Conference on Object-Oriented Programming
Modular Statically Typed Multimethods
ECOOP '99 Proceedings of the 13th European Conference on Object-Oriented Programming
ISAAC '88 Proceedings of the International Symposium ISSAC'88 on Symbolic and Algebraic Computation
Towards a theory of type structure
Programming Symposium, Proceedings Colloque sur la Programmation
The Semantics of CLEAR, A Specification Language
Proceedings of the Abstract Software Specifications, 1979 Copenhagen Winter School
Tecton: A Language for Manipulating Generic Objects
Program Specification, Proceedings of a Workshop
The Lambda library: unnamed functions in C++
Software—Practice & Experience
LFP '84 Proceedings of the 1984 ACM Symposium on LISP and functional programming
LFP '82 Proceedings of the 1982 ACM symposium on LISP and functional programming
HOPE: An experimental applicative language
LFP '80 Proceedings of the 1980 ACM conference on LISP and functional programming
A language for computational algebra
SYMSAC '81 Proceedings of the fourth ACM symposium on Symbolic and algebraic computation
Operators and algebraic structures
FPCA '81 Proceedings of the 1981 conference on Functional programming languages and computer architecture
CLU REFERENCE MANUAL
A comparative study of language support for generic programming
OOPSLA '03 Proceedings of the 18th annual ACM SIGPLAN conference on Object-oriented programing, systems, languages, and applications
Formalization of generics for the .NET common language runtime
Proceedings of the 31st ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Proceedings of the 32nd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
C++ Template Metaprogramming: Concepts, Tools, and Techniques from Boost and Beyond (C++ in Depth Series)
MultiArray: a C++ library for generic programming with arrays
Software—Practice & Experience - Research Articles
Essential language support for generic programming
Proceedings of the 2005 ACM SIGPLAN conference on Programming language design and implementation
Proceedings of the tenth ACM SIGPLAN international conference on Functional programming
Conference record of the 33rd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
A language for generic programming
A language for generic programming
MultiJava: Design rationale, compiler implementation, and applications
ACM Transactions on Programming Languages and Systems (TOPLAS)
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
An extended comparative study of language support for generic programming
Journal of Functional Programming
Evolving a language in and for the real world: C++ 1991-2006
Proceedings of the third ACM SIGPLAN conference on History of programming languages
Expressive and modular predicate dispatch for Java
ACM Transactions on Programming Languages and Systems (TOPLAS)
Putting theories together to make specifications
IJCAI'77 Proceedings of the 5th international joint conference on Artificial intelligence - Volume 2
A language for generic programming in the large
Science of Computer Programming
Language requirements for large-scale generic libraries
GPCE'05 Proceedings of the 4th international conference on Generative Programming and Component Engineering
Hi-index | 0.00 |
C++0x is the working title for the revision of the ISO standard of the C++ programming language that was originally planned for release in 2009 but that was delayed to 2011. The largest language extension in C++0x was "concepts", that is, a collection of features for constraining template parameters. In September of 2008, the C++ standards committee voted the concepts extension into C++0x, but then in July of 2009, the committee voted the concepts extension back out of C++0x. This article is my account of the technical challenges and debates within the "concepts" effort in the years 2003 to 2009. To provide some background, the article also describes the design space for constrained parametric polymorphism, or what is colloquially know as constrained generics. While this article is meant to be generally accessible, the writing is aimed toward readers with background in functional programming and programming language theory. This article grew out of a lecture at the Spring School on Generic and Indexed Programming at the University of Oxford, March 2010.