Show simple item record

dc.contributor.authorSutton, Andrew
dc.contributor.authorStroustrup, Bjarne
dc.date.accessioned2016-02-25T12:59:18Z
dc.date.available2016-02-25T12:59:18Z
dc.date.issued2012
dc.identifier.citationSutton A, Stroustrup B (2012) Design of Concept Libraries for C++. Lecture Notes in Computer Science: 97–118. Available: http://dx.doi.org/10.1007/978-3-642-28830-2_6.
dc.identifier.issn0302-9743
dc.identifier.issn1611-3349
dc.identifier.doi10.1007/978-3-642-28830-2_6
dc.identifier.urihttp://hdl.handle.net/10754/597944
dc.description.abstractWe present a set of concepts (requirements on template arguments) for a large subset of the ISO C++ standard library. The goal of our work is twofold: to identify a minimal and useful set of concepts required to constrain the library's generic algorithms and data structures and to gain insights into how best to support such concepts within C++. We start with the design of concepts rather than the design of supporting language features; the language design must be made to fit the concepts, rather than the other way around. A direct result of the experiment is the realization that to simply and elegantly support generic programming we need two kinds of abstractions: constraints are predicates on static properties of a type, and concepts are abstract specifications of an algorithm's syntactic and semantic requirements. Constraints are necessary building blocks of concepts. Semantic properties are represented as axioms. We summarize our approach: concepts = constraints + axioms. This insight is leveraged to develop a library containing only 14 concepts that encompassing the functional, iterator, and algorithm components of the C++ Standard Library (the STL). The concepts are implemented as constraint classes and evaluated using Clang's and GCC's Standard Library test suites. © 2012 Springer-Verlag.
dc.description.sponsorshipThanks to Matt Austern, Paul McJones, Gabriel Dos Reis, andAlex Stepanov for comments that led to major improvements and will be the basis forfurther work. This project was partially supported by NSF grants A3350-32525-CS andA0040-32525-CS and Award KUS-C1-016-04, made by King Abdullah University ofScience and Technology (KAUST).
dc.publisherSpringer Nature
dc.subjectaxioms
dc.subjectC++
dc.subjectconcepts
dc.subjectconstraints
dc.subjectGeneric programming
dc.titleDesign of Concept Libraries for C++
dc.typeBook Chapter
dc.identifier.journalLecture Notes in Computer Science
dc.contributor.institutionTexas A and M University, College Station, United States
kaust.grant.numberKUS-C1-016-04


This item appears in the following Collection(s)

Show simple item record