Annex D (informative) Compatibility [diff]

D.1 C++ and Ranges [diff.cpp]

D.1.2 Stronger Constraints [diff.cpp.constraints]

In this proposal, many algorithms and utilities get stricter type checking. For example, algorithms constrained with LessThanComparable today are constrained by StrictTotallyOrdered in this document. This concept requires types to provide all the relational operators, not just operator<.

The use of coarser-grained, higher-level concepts in algorithm constraints is to make the type checks more semantic in nature and less syntactic. It also has the benefit of being less verbose while giving algorithm implementors greater implementation freedom. This approach is in contrast to the previous effort to add concepts to the Standard Library in the C++0x timeframe, which saw a proliferation of small, purely syntactic concepts and algorithm constraints that merely restated the algorithms' implementation details more verbosely in the algorithms' function signatures.

The potential for breakage must be carefully weighed against the integrity and complexity of the constraints system. The coarseness of the concepts may need to change in response to real-world usage.