在我的代码中,我采用了类似于某些标准库算法的设计策略,因为可以通过函数对象自定义确切的行为。最简单的例子是 std::sort,其中函数对象可以控制对象之间的比较方式。
我注意到 Visual C++ 提供了 std::sort 的两种实现,这自然会涉及代码重复。我会想象它可能只有一个实现,并提供一个默认比较器(使用 operator< )作为默认模板参数。
两个不同版本背后的原因是什么?我的建议会以某种方式使界面更复杂吗?或者当对象不提供 operator< 时会导致混乱的错误消息?或者它只是不起作用?
谢谢,
大卫