Scratchpad's view of algebra II: A categorical view of factorization
ISSAC '91 Proceedings of the 1991 international symposium on Symbolic and algebraic computation
Eiffel: the language
AXIOM: the scientific computation system
AXIOM: the scientific computation system
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++
Algorithm-oriented generic libraries
Software—Practice & Experience
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
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 Definition of Standard ML
Type Classes with Functional Dependencies
ESOP '00 Proceedings of the 9th European Symposium on Programming Languages and Systems
Scratchpad's View of Algebra I: Basic Commutative Algebra
DISCO '90 Proceedings of the International Symposium on Design and Implementation of Symbolic Computation Systems
Fundamentals of Generic Programming
Selected Papers from the International Seminar on Generic Programming
Concept-controlled polymorphism
Proceedings of the 2nd international conference on Generative programming and component engineering
Adding wildcards to the Java programming language
Proceedings of the 2004 ACM symposium on Applied computing
C++ Template Metaprogramming: Concepts, Tools, and Techniques from Boost and Beyond (C++ in Depth Series)
Essential language support for generic programming
Proceedings of the 2005 ACM SIGPLAN conference on Programming language design and implementation
Conference record of the 33rd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
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
A comparison of c++ concepts and haskell type classes
Proceedings of the ACM SIGPLAN workshop on Generic programming
Elements of Programming
The axioms strike back: testing with concepts and axioms in C++
GPCE '09 Proceedings of the eighth international conference on Generative programming and component engineering
SCAM '09 Proceedings of the 2009 Ninth IEEE International Working Conference on Source Code Analysis and Manipulation
Identification of Idiom Usage in C++ Generic Libraries
ICPC '10 Proceedings of the 2010 IEEE 18th International Conference on Program Comprehension
Generic programming with c++ concepts and haskell type classes: A comparison
Journal of Functional Programming
Support for the evolution of C++ generic functions
SLE'10 Proceedings of the Third international conference on Software language engineering
Language requirements for large-scale generic libraries
GPCE'05 Proceedings of the 4th international conference on Generative Programming and Component Engineering
ESOP'12 Proceedings of the 21st European conference on Programming Languages and Systems
A system for axiomatic programming
CICM'12 Proceedings of the 11th international conference on Intelligent Computer Mathematics
Hi-index | 0.00 |
We 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.