Virtual classes: a powerful mechanism in object-oriented programming
OOPSLA '89 Conference proceedings on Object-oriented programming systems, languages and applications
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
Eiffel: the language
Manifest types, modules, and separate compilation
POPL '94 Proceedings of the 21st ACM SIGPLAN-SIGACT symposium on Principles of programming languages
The design and evolution of C++
The design and evolution of C++
Algorithm-oriented generic libraries
Software—Practice & Experience
Signatures: a language extension for improving type abstraction and subtype polymorphism in C++
Software—Practice & Experience
C++ gems
Contraint-based polymorphism in Cecil: towards a practical and static type system
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
A library of generic algorithms in Ada
SIGAda '87 Proceedings of the 1987 annual ACM SIGAda international conference on Ada
Fast Decision Procedures Based on Congruence Closure
Journal of the ACM (JACM)
Variations on the Common Subexpression Problem
Journal of the ACM (JACM)
Generative programming: methods, tools, and applications
Generative programming: methods, tools, and applications
On the design of CGAL a computational geometry algorithms library
Software—Practice & Experience - Special issue on discrete algorithm engineering
STL tutorial and reference guide, second edition: C++ programming with the standard template library
STL tutorial and reference guide, second edition: C++ programming with the standard template library
The boost graph library: user guide and reference manual
The boost graph library: user guide and reference manual
The C++ Programming Language
The Definition of Standard ML
The Matrix Template Library: Generic Components for High-Performance Scientific Computing
Computing in Science and Engineering
ISAAC '88 Proceedings of the International Symposium ISSAC'88 on Symbolic and Algebraic Computation
Generic Graph Algorithms for Sparse Matrix Ordering
ISCOPE '99 Proceedings of the Third International Symposium on Computing in Object-Oriented Parallel Environments
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
Java(TM) Language Specification, The (3rd Edition) (Java (Addison-Wesley))
Java(TM) Language Specification, The (3rd Edition) (Java (Addison-Wesley))
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)
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
Associated types and constraint propagation for mainstream object-oriented generics
OOPSLA '05 Proceedings of the 20th annual ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Scalable component abstractions
OOPSLA '05 Proceedings of the 20th annual ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Lifting sequential graph algorithms for distributed-memory parallel computation
OOPSLA '05 Proceedings of the 20th annual ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Conference record of the 33rd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
A language for generic programming
A language for generic programming
Algorithm specialization in generic programming: challenges of constrained generics in C++
Proceedings of the 2006 ACM SIGPLAN conference on Programming language design and implementation
Queue - Component Technologies
An extended comparative study of language support for generic programming
Journal of Functional Programming
Language requirements for large-scale generic libraries
GPCE'05 Proceedings of the 4th international conference on Generative Programming and Component Engineering
Scrap++: scrap your boilerplate in C++
Proceedings of the 2006 ACM SIGPLAN workshop on Generic 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
Simple and safe SQL queries with c++ templates
GPCE '07 Proceedings of the 6th international conference on Generative programming and component engineering
Library composition and adaptation using c++ concepts
GPCE '07 Proceedings of the 6th international conference on Generative programming and component engineering
GPCE '07 Proceedings of the 6th international conference on Generative programming and component engineering
Runtime concepts for the C++ standard template library
Proceedings of the 2008 ACM symposium on Applied computing
Proceedings of the 2008 ACM symposium on Applied computing
A comparison of c++ concepts and haskell type classes
Proceedings of the ACM SIGPLAN workshop on Generic programming
Integrating Nominal and Structural Subtyping
ECOOP '08 Proceedings of the 22nd European conference on Object-Oriented Programming
Proceedings of the 23rd ACM SIGPLAN conference on Object-oriented programming systems languages and applications
GPCE '08 Proceedings of the 7th international conference on Generative programming and component engineering
Implementation of a Finite State Machine with Active Libraries in C++
Generative and Transformational Techniques in Software Engineering II
Institutions, property-aware programming and testing
LCSD '07 Proceedings of the 2007 Symposium on Library-Centric Software Design
C++ concepts as institutions: a specification view on concepts
LCSD '07 Proceedings of the 2007 Symposium on Library-Centric Software Design
LCSD '07 Proceedings of the 2007 Symposium on Library-Centric Software Design
Policies of System Level Pipeline Modeling
Electronic Notes in Theoretical Computer Science (ENTCS)
Towards the Modularization of C++ Concept Maps
Electronic Notes in Theoretical Computer Science (ENTCS)
C++ Bindings to External Software Libraries with Examples from BLAS, LAPACK, UMFPACK, and MUMPS
ACM Transactions on Mathematical Software (TOMS)
Multiparadigm Programming in Object-Oriented Languages: Current Research
Object-Oriented Technology. ECOOP 2008 Workshop Reader
LEESA: Embedding Strategic and XPath-Like Object Structure Traversals in C++
DSL '09 Proceedings of the IFIP TC 2 Working Conference on Domain-Specific Languages
Generic Libraries in C++ with Concepts from High-Level Domain Descriptions in Haskell
DSL '09 Proceedings of the IFIP TC 2 Working Conference on Domain-Specific Languages
C++ code design for multi-purpose explicit finite volume methods: requirements and solutions
Proceedings of the 8th workshop on Parallel/High-Performance Object-Oriented Scientific Computing
Adaptable component frameworks: using vector from the C++ standard library as an example
Proceedings of the 2009 ACM SIGPLAN workshop on Generic programming
The function concept in C++: an empirical study
Proceedings of the 2009 ACM SIGPLAN workshop on Generic programming
Increasing Reuse in Component Models through Genericity
ICSR '09 Proceedings of the 11th International Conference on Software Reuse: Formal Foundations of Reuse and Domain Engineering
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
JavaGI in the battlefield: practical experience with generalized interfaces
GPCE '09 Proceedings of the eighth international conference on Generative programming and component engineering
Generating safe template languages
GPCE '09 Proceedings of the eighth international conference on Generative programming and component engineering
Axiom-Based Transformations: Optimisation and Testing
Electronic Notes in Theoretical Computer Science (ENTCS)
Coordinate-free numerics: all your variation points for free?
International Journal of Computational Science and Engineering
Constraining Type Parameters of UML 2 Templates with Substitutable Classifiers
MODELS '09 Proceedings of the 12th International Conference on Model Driven Engineering Languages and Systems
Source Code Rejuvenation Is Not Refactoring
SOFSEM '10 Proceedings of the 36th Conference on Current Trends in Theory and Practice of Computer Science
Simple and safe SQL queries with C++ templates
Science of Computer Programming
Science of Computer Programming
Design and evaluation of C++ open multi-methods
Science of Computer Programming
Generic flow-sensitive optimizing transformations in C++ with concepts
Proceedings of the 2010 ACM Symposium on Applied Computing
SSDGP'06 Proceedings of the 2006 international conference on Datatype-generic programming
OpenMP extensions for generic libraries
IWOMP'08 Proceedings of the 4th international conference on OpenMP in a new era of parallelism
Dynamic algorithm selection for runtime concepts
Science of Computer Programming
C++ lambda expressions and closures
Science of Computer Programming
Domain-specific language integration with compile-time parser generator library
GPCE '10 Proceedings of the ninth international conference on Generative programming and component engineering
Type classes as objects and implicits
Proceedings of the ACM international conference on Object oriented programming systems languages and applications
Generic programming with c++ concepts and haskell type classes: A comparison
Journal of Functional Programming
An architecture for generic extensions
Science of Computer Programming
Automating exception-safety classification
Science of Computer Programming
A generic lazy evaluation scheme for exact geometric computations
Science of Computer Programming
Functional programming with C++ template metaprograms
CEFP'09 Proceedings of the Third summer school conference on Central European functional programming school
Experiences in developing the mCRL2 toolset
Software—Practice & Experience
A language for generic programming in the large
Science of Computer Programming
Support for the evolution of C++ generic functions
SLE'10 Proceedings of the Third international conference on Software language engineering
JavaGI: The Interaction of Type Classes with Interfaces and Inheritance
ACM Transactions on Programming Languages and Systems (TOPLAS)
Measuring the Overhead of C++ Standard Template Library Safe Variants
Electronic Notes in Theoretical Computer Science (ENTCS)
Generic model transformations: write once, reuse everywhere
ICMT'11 Proceedings of the 4th international conference on Theory and practice of model transformations
ConceptClang: an implementation of C++ concepts in Clang
Proceedings of the seventh ACM SIGPLAN workshop on Generic programming
A proposal for user-defined reductions in OpenMP
IWOMP'10 Proceedings of the 6th international conference on Beyond Loop Level Parallelism in OpenMP: accelerators, Tasking and more
Exploiting regularity of user-defined types to improve precision of program analyses
Proceedings of the 27th Annual ACM Symposium on Applied Computing
The implicit calculus: a new foundation for generic programming
Proceedings of the 33rd ACM SIGPLAN conference on Programming Language Design and Implementation
ESOP'12 Proceedings of the 21st European conference on Programming Languages and Systems
Design of concept libraries for c++
SLE'11 Proceedings of the 4th international conference on Software Language Engineering
A system for axiomatic programming
CICM'12 Proceedings of the 11th international conference on Intelligent Computer Mathematics
Using functional languages to facilitate C++ metaprogramming
Proceedings of the 8th ACM SIGPLAN workshop on Generic programming
Marco: safe, expressive macros for any language
ECOOP'12 Proceedings of the 26th European conference on Object-Oriented Programming
SSGIP'10 Proceedings of the 2010 international spring school conference on Generic and Indexed Programming
Reusable graph transformation templates
AGTIVE'11 Proceedings of the 4th international conference on Applications of Graph Transformations with Industrial Relevance
Proceedings of the Twelfth Workshop on Language Descriptions, Tools, and Applications
Summary-based data-flow analysis that understands regular composite objects and iterators
ACM SIGAPP Applied Computing Review
Genericity for model management operations
Software and Systems Modeling (SoSyM)
From types to type requirements: genericity for model-driven engineering
Software and Systems Modeling (SoSyM)
Composing textual modelling languages in practice
Proceedings of the 6th International Workshop on Multi-Paradigm Modeling
Scalaness/nesT: type specialized staged programming for sensor networks
Proceedings of the 12th international conference on Generative programming: concepts & experiences
Extending Type Inference to Variational Programs
ACM Transactions on Programming Languages and Systems (TOPLAS)
Early detection of type errors in C++ templates
Proceedings of the ACM SIGPLAN 2014 Workshop on Partial Evaluation and Program Manipulation
Boost.SIMD: generic programming for portable SIMDization
Proceedings of the 2014 Workshop on Programming models for SIMD/Vector processing
Template metaprogramming techniques for concept-based specialization
Scientific Programming
Hi-index | 0.00 |
Generic programming has emerged as an important technique for the development of highly reusable and efficient software libraries. In C++, generic programming is enabled by the flexibility of templates, the C++ type parametrization mechanism. However, the power of templates comes with a price: generic (template) libraries can be more difficult to use and develop than non-template libraries and their misuse results in notoriously confusing error messages. As currently defined in C++98, templates are unconstrained, and type-checking of templates is performed late in the compilation process, i.e., after the use of a template has been combined with its definition. To improve the support for generic programming in C++, we introduce concepts to express the syntactic and semantic behavior of types and to constrain the type parameters in a C++ template. Using concepts, type-checking of template definitions is separated from their uses, thereby making templates easier to use and easier to compile. These improvements are achieved without limiting the flexibility of templates or decreasing their performance - in fact their expressive power is increased. This paper describes the language extensions supporting concepts, their use in the expression of the C++ Standard Template Library, and their implementation in the ConceptGCC compiler. Concepts are candidates for inclusion in the upcoming revision of the ISO C++ standard, C++0x.