2
Why get pages of impenetrable error messages for this?
• int i = 0, j = 2;
std::sort( i, j ); // screenfuls of arcane error messages ensue…
Because today sort is defined like this:
• template<class RandomAccessIterator>
void sort( RandomAccessIterator first, RandomAccessIterator last );
In C++0x we could say something like:
• template<class T> concept RandomAccessIterator {
  … definition of what a RandomAccessIterator<T> should be able
  to do, such as increment, dereference, etc. …
};
• template<class T>
void sort( RandomAccessIterator<T> first, RandomAccessIterator<T> last );
•Enables clear, friendly, and morally decent error messages:
• int i = 0, j = 2;
std::sort( i, j ); // hey, stupid, i and j aren’t RandomAccessIterators…
Concepts