我正在尝试将boost::flat_set
用于我需要唯一的少量迭代器。由于对make_reverse_iterator
的调用不明确,因此代码无法编译,但是我不确定它是如何发生的。我试图将问题简化为MWE:
#include <boost/container/flat_set.hpp>
#include <set>
#include <iostream>
using Set = std::set<int>;
using SetIt = Set::iterator;
struct Comparator {
bool operator()(SetIt lhs, SetIt rhs) const {
return &(*lhs) < &(*rhs);
}
};
int main() {
std::set<int> x;
boost::container::flat_set<Set::iterator, Comparator> a;
boost::container::flat_set<Set::iterator, Comparator> b;
a.insert(x.insert(1).first);
a.insert(x.insert(2).first);
a.insert(x.insert(3).first);
a.insert(x.insert(4).first);
a.insert(x.insert(5).first);
b.insert(x.insert(3).first);
b.insert(x.insert(4).first);
b.insert(x.insert(5).first);
b.insert(x.insert(6).first);
b.insert(x.insert(7).first);
a.merge(b);
for (auto v : a)
std::cout << *v << '\n';
return 0;
}