这是来自测试。 任务:创建一个与std :: less完全相同的泛型函数对象,但总是返回true。 和给定的解决方案:
template<class T>
struct myless : less<T> {
bool operator(T, T) const { return true; }
};
如何实例化和使用它?
答案 0 :(得分:1)
去另一所学校。提供的解决方案包含2条正确的行。它们是template<class T>
和};
;我在代码审查中拒绝的所有其他内容。
template<class T>
struct myless {
bool operator(T const&, T const&) const { return true; }
};
这至少是正确的一半。对于C ++ 14,您还需要
template<>
struct myless<void> {
using is_transparent=void;
template<class T, class U>
bool operator(T const&, U const&) const { return true; }
};
在std库中使用它很难,因为它们都需要myless
不满足的公理。
您可以通过my_less<int>()
创建它。然后,您通过另一个 int
套来传递该对象两个()
。
答案 1 :(得分:0)
你可以在std :: sort中使用它:
template <class RandomAccessIterator>
void sort (RandomAccessIterator first, RandomAccessIterator last);
template <class RandomAccessIterator, class Compare>
void sort (RandomAccessIterator first, RandomAccessIterator last, Compare comp);