4

我想知道boost::rangerange_v3是否会以类似于std::begin协调 STL 容器和类 C 数组的方式协调自由函数和成员函数(我的意思是在编码通用性方面)?

更具体地说,在自动调用std::list::sort给出的最佳实现的列表上调用std::sort对我来说会很方便。

最后,成员函数是否只能被视为其通用对应项的接口(std::list::sort从未在客户端代码中调用)?

4

1 回答 1

2

AFAIK,你提到的两个图书馆都没有直接处理这个问题。在 C++17 中更普遍地处理这种事情有一个推动力,包括提出f(x)和等效的建议,x.f()但正如我在上面的评论中提到的,我不清楚它是否适用于 range-v3 的算法。

我确实注意到 range-v3 的 sort.hpp: 中有一个有趣的评论// TODO Forward iterators, like EoP?。所以,也许 Niebler 确实有想法来支持更通用的排序。(“EoP”是Alex Stepanov的编程元素。)

一个复杂之处:通用排序使用迭代器重新排序值,而 list::sort() 重新排序链接本身。如果您关心排序后迭代器指向的内容,则区别很重要,因此您仍然需要一种方法来选择所需的排序。甚至有人会争辩说 sort() 永远不应该调用 list::sort(),因为语义不同。

于 2015-08-05T12:10:44.880 回答