【发布时间】:2010-08-18 19:51:51
【问题描述】:
我想做的是,在一个单独的命名空间中,定义我自己的 sort()、copy() 等实现,这些实现与数据库表/视图/等容器一起使用,而不是内存中的 std 容器。如果我定义自己的 sort() 来接受我的自定义转发迭代器,编译器如何解决这个问题?或者,我需要做什么才能正确解析,即使用我的自定义 sort() 而不是 std sort(),即使我可能传入符合标准迭代器类型要求的自定义迭代器类型?
如果它使用 std sort(),它实际上仍然可以工作,只是效率极低,因为它不会将排序移交给数据库,而我的 sort() 实现会。当它们具有相同的名称并接受相同的类型时,我只是不确定如何通过 std sort() 正确调用我的 sort() 。我的描述中可能遗漏了一些细节,所以请耐心等待我解决这个问题。
另外,我发现以下问题与我所问的问题最相似(提到 ADL 和部分专业化),但我不确定它是否直接解决了我的问题或描述了做事的最佳方式我所描述的: Overloading for_each for specific iterator types
【问题讨论】:
标签: c++ templates function stl overloading