以下代码在gcc中可以正常工作:
struct S {
int i, j;
auto operator<(const S& s) const {
return i < s.i;
};
};
std::vector<S> v;
std::make_heap(v.begin(), v.end());
但是当我切换到C++20的范围算法时:
std::ranges::make_heap(v);
source>:14:27: error: no match for call to '(const std::ranges::__make_heap_fn) (std::vector<S>&)'
14 | std::ranges::make_heap(v);
|
^
看起来 struct S
不满足 ranges::make_heap
的要求,但我不知道具体是什么问题,请问有人能帮忙吗?