以std::sort
和std::ranges::sort
为例,中的迭代器类std::ranges::sort
受到以下概念的约束std::random_access_iterator
:
template< std::random_access_iterator I, std::sentinel_for<I> S,
class Comp = ranges::less, class Proj = std::identity >
requires std::sortable<I, Comp, Proj>
constexpr I
sort( I first, S last, Comp comp = {}, Proj proj = {} );
但std::sort
不是:
template< class RandomIt >
void sort( RandomIt first, RandomIt last );
为什么std::sort
(以及所有非范围算法)不受限制?