
TL;DR
This paper discusses the history, technical challenges, and debates surrounding the 'concepts' feature in C++0x, a proposed extension for constraining template parameters that was ultimately removed from the standard.
Contribution
It provides a detailed account of the design space, technical issues, and decision-making process related to the 'concepts' extension in C++0x from 2003 to 2009.
Findings
The 'concepts' extension was initially adopted and later removed from C++0x.
Technical challenges included designing effective constraints for templates.
The article offers insights into language design debates and the evolution of constrained generics.
Abstract
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…
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
Taxonomy
TopicsAdvanced Software Engineering Methodologies · Logic, programming, and type systems · Software Engineering Research
