Previous article

Next article

A Semantic Definition of Separate Type Checking in C++ with Concepts

Marcin Zalewski and Sibylle Schupp, Chalmers University, Sweden


PDF Icon
PDF Version


We formalize the informal definition of C++ concepts that is currently considered by the C++ standardization committee for inclusion in the next version of the language. Our definition captures the basic semantics of separate type checking, where conceptconstrained templates are checked separately from their uses and comprises of three main parts: non-standard name lookup, type checking of constrained templates, and implementation binding in concept maps. The formalization reveals two possible problems in the informal definition: hiding of names is not respected and incompatible implementations can be bound to concept entities. Furthermore, our definition allows formulating intuitively correct code that is rejected by the informal specification.

Note: Due to the typographical sophistication of this article, no HTML version is available. Please use the PDF version.


About the authors


Marcin Zalewski received his PhD degree in Computer Science from Chalmers University in 2009. Currently, he is a postdoctoral researcher at Open Systems Lab, at Indiana University. His current research interests include generic programming, metaprogramming, and application of algebraic specification methods to software construction. He can be reached at


Sibylle Schupp is Professor and Head of the Institute for Software Systems at Hamburg University of Technology. See for contact details.

Marcin Zalewski, Sibylle Schupp: "A Semantic Definition of Separate Type Checking in C++ with Concepts", in Journal of Object Technology, vol. 8, no. 5, July-August 2009, pp. 105-132

Previous article

Next article