【发布时间】:2021-02-07 13:58:25
【问题描述】:
为什么在range 命名空间中实现std::range::sort(和其他基于范围的算法)?为什么不将其定义为std::sort 的重载占用范围?
【问题讨论】:
-
我的猜测是,这是为了避免使对重载分辨率的控制成为库规范和实现者的噩梦。
-
@StoryTeller-UnslanderMonica 他们不能用概念来解决这个问题吗?
-
他们需要检查每个现有的重载并更新从重载集中删除它的条件。不管有没有概念,要确保它的行为正确,仍然需要做很多工作。我怀疑 C++20 是否会支持范围,如果他们走那条路的话。
-
这可能是一个潜在的重大变化吗?允许
std::sort(range, compare)可能会改变现有代码中std::sort(begin, end)的含义。 -
@cigien 如果某个东西同时是一个有效的比较器和一个有效的迭代器怎么办? :P 这不太可能,但可能是这样。
标签: c++ c++20 std-ranges