Note: This paper explores potential future standardization directions and alternatives. It does not discuss or propose to amend the C++14 Committee Draft paper whose ballot is currently in progress.
A new WG21 paper is available. A copy is linked below, and the paper will also appear in the next normal WG21 mailing. If you are not a committee member, please use the comments section below or the std-proposals forum for public discussion.
Document number: N3701
by A. Sutton, B. Stroustrup, G. Dos Reis
This paper is in its 2nd revision. There have been a number of substantial
changes, which are summarize here.
- The syntax of constrained member functions has changed.
- The syntax of the requires expression has changed.
- We have introduced syntax for constraining generic lambdas, and using constraints wherever auto is used.
- We allow the use of overload sets as arguments to constrained functions.
- The standard wording has been more extensively developed, but does not yet include language for constrained generic lambdas.
This paper is organized like this:
- Tutorial: introduces the new features specified by Concepts Lite, their core concepts and examples.
- User’s guide: provides a more extensive discussion of the proposed features and demonstrates the completeness of the constraints mechanism. We also include some high-level discussion of the language mechanics.
- Discussion: explains what constrains are not. In particular, we try to outline constraint’s relation to concepts and to dispel some common misconceptions about concepts.
- Design Notes: Notes on the design of terse notation for templates and generic lambdas.
- Language definition: presents a semi-formal definition of constraints