我的 C++ 标准文档副本记录了标准排序功能。
25.4.1.1 排序
template<class RandomAccessIterator>
void sort(RandomAccessIterator first, RandomAccessIterator last);
...
Effects: Sorts the elements in the range [first,last).
要求:RandomAccessIterator 应满足 ValueSwappable (17.6.3.2) 的要求。*first 的类型应满足 MoveConstructible(表 20)和 MoveAssignable 的要求
好的 - 但它是否也应该要求所引用的元素也具有可比性?
我希望“要求”条款包括以下内容:
“解除引用 的类型RandomAccessIterator
应满足 . 的要求LessThanComparable
。”
或者更好
“iterator_traits<RandomAccessIterator>::value_type
应该满足LessThanComparable的要求。”
因为 24.4.1 部分说“如果Iterator
是迭代器的类型,则iterator_traits<Iterator>::value_type
需要定义类型......”
为什么不包括这种语言。当然 sort 函数不能对无法比较的元素进行排序。